diff -Nru postgis-2.1.1/aclocal.m4 postgis-2.1.2+dfsg/aclocal.m4 --- postgis-2.1.1/aclocal.m4 2013-11-08 19:45:58.000000000 +0000 +++ postgis-2.1.2+dfsg/aclocal.m4 2014-03-29 05:39:39.000000000 +0000 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.13.3 -*- Autoconf -*- +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. diff -Nru postgis-2.1.1/ChangeLog postgis-2.1.2+dfsg/ChangeLog --- postgis-2.1.1/ChangeLog 2013-11-05 18:25:10.000000000 +0000 +++ postgis-2.1.2+dfsg/ChangeLog 2014-03-29 05:21:01.000000000 +0000 @@ -1,3 +1,526 @@ +2014-03-28 22:10 strk + + * regress/run_test.pl: Fix extension upgrade call for topology in + run_test.pl + +2014-03-28 20:11 strk + + * regress/legacy.sql: Also find uninstall_legacy.sql in :scriptdir, + use \cd for 9.1 support + +2014-03-28 19:56 robe + + * NEWS, doc/release_notes.xml: #2690 copy news to doc release + notes. Be optimistic we'll release 3/31/2014 + +2014-03-28 19:21 strk + + * topology/test/regress/st_createtopogeo.sql: More spatial_ref_sys + truncation during test + +2014-03-28 19:04 strk + + * regress/legacy.sql: Have regress/legacy.sql truncate + spatial_ref_sys + +2014-03-28 19:04 strk + + * regress/legacy.sql, regress/run_test.pl: Allow using :scriptdir + variable in regress tests + + Have legacy.sql use it to find legacy.sql. + The run_test.pl script sets it using pg_config when --extensions + switch is given. + +2014-03-28 13:04 pramsey + + * regress/loader/ReprojectPts-pre.sql, regress/regress_ogc.sql, + regress/regress_proj.sql: #2687, pass tests when raster/vector + are co-loaded + +2014-03-28 12:53 strk + + * extensions/postgis/Makefile.in: Extension "next" is patch-level + away (#2684) + +2014-03-28 12:34 pramsey + + * extensions/postgis/Makefile.in, + extensions/upgradeable_versions.mk: #2684, upgrade extensions at + the patch level + +2014-03-26 15:04 pramsey + + * liblwgeom/lwgeodetic_tree.c: CircNode compare function needs to + deference inputs + +2014-03-26 10:20 colivier + + * postgis/lwgeom_in_gml.c, regress/in_gml.sql, + regress/in_gml_expected: #2681 fix for 2.1 branch + +2014-03-26 10:06 pramsey + + * NEWS: Add #2619 + +2014-03-26 09:37 pramsey + + * liblwgeom/lwgeodetic.c, liblwgeom/lwin_geojson.c: Quiet a pair of + llvm warnings + +2014-03-26 09:22 pramsey + + * configure.ac, liblwgeom/lwin_geojson.c, regress/in_geojson.sql, + regress/in_geojson_expected: #2619, SIGSEGV in ST_GeomFromGeoJSON + with empty list of coordinates + +2014-03-25 20:02 bergun + + * java/jdbc/jtssrc/pom.xml, java/jdbc/pom.xml: #2625 updating + pom.xml for 2.1.2 release + +2014-03-25 13:35 strk + + * raster/rt_pg/Makefile.in: rtpostgis_upgrade_21_minor.sql is _not_ + same as 20_21 + + Should fix make check w/out re-breaking #2674 + +2014-03-25 12:31 pramsey + + * NEWS: Update with latest changes + +2014-03-25 12:26 pramsey + + * configure.ac: #2539, Check for json-c/json.h presence/usability + before json/json.h + +2014-03-25 08:34 pramsey + + * liblwgeom/cunit/cu_tree.c: Remove noise from test + +2014-03-25 08:17 pramsey + + * liblwgeom/cunit/cu_tree.c, liblwgeom/lwgeodetic.c, + liblwgeom/lwgeodetic.h, liblwgeom/lwgeodetic_tree.c, + liblwgeom/lwgeodetic_tree.h, + postgis/geography_measurement_trees.c: #2675, bad handling of + multi-geometries in geography tree distance + +2014-03-24 17:49 strk + + * NEWS, utils/postgis_proc_upgrade.pl: Fix missing operator = and + hash_raster_ops opclass on raster + + Closes #2674 + +2014-03-22 05:29 robe + + * raster/rt_core/rt_api.h: #2620 allow kFreeBSD to be treated as + FreeBSD + +2014-03-22 04:29 robe + + * raster/rt_pg/rtpostgis.sql.in: #2674 missed the operator class + hash_raster_ops in last commit + +2014-03-22 04:28 robe + + * raster/rt_pg/rtpostgis.sql.in: #2674 raster missing availability + info for some operators and functions used in equality operator + +2014-03-18 16:36 strk + + * .travis.yml: Fix travis build by only installing postgresql 9.1 + (#2678) + +2014-03-13 21:11 robe + + * doc/Makefile.in: #2609 topogeo_AddPolygon unnecessary use of + DISTINCT + +2014-03-10 18:46 robe + + * topology/sql/populate.sql.in: #2609 topogeo_AddPolygon + unnecessary use of DISTINCT + +2014-03-09 23:16 robe + + * doc/using_postgis_dataman.xml: #2558: WKT form(s) of MULTIPOINT + documentation make OGC compliant + +2014-03-09 18:55 strk + + * NEWS, configure.ac: Error out at configure time if no SQL + preprocessor can be found + + Closes #2666 + +2014-03-08 00:51 pramsey + + * NEWS, liblwgeom/cunit/cu_geodetic.c, liblwgeom/lwgeodetic.c: + #2534, st_distance is returning incorrect results for large + geographies + +2014-03-08 00:43 pramsey + + * liblwgeom/lwgeodetic.c, liblwgeom/lwgeodetic_tree.c: #2636, + Regress ST_Distance_Sphere between 2.1.2dev and 2.0.4 with 2D + +2014-03-07 23:58 pramsey + + * NEWS, liblwgeom/lwgeodetic.c: #2634, regression in sphere + distance code + +2014-03-07 23:20 pramsey + + * NEWS, liblwgeom/lwin_geojson.c: #2546, GeoJSON with string + coordinates parses incorrectly + +2014-03-07 13:27 pramsey + + * NEWS: Update for #2638 + +2014-03-06 05:53 pramsey + + * liblwgeom/cunit/cu_geodetic.c, liblwgeom/g_box.c: #2638, + geography ST_Intersects bugginess with Polygon/multilinestring M + +2014-03-03 03:01 robe + + * extensions/postgis/META.json, extensions/postgis/doc/postgis.md, + extensions/postgis/sql_bits/remove_from_extension.sql.in, + extensions/postgis_extension_helper.sql, + extensions/postgis_extension_helper_uninstall.sql, + extensions/postgis_tiger_geocoder/META.json, + extensions/postgis_tiger_geocoder/doc/postgis_tiger_geocoder.md, + extensions/postgis_tiger_geocoder/sql_bits/remove_from_extension.sql.in, + extensions/postgis_topology/META.json, + extensions/postgis_topology/doc/postgis.md, + extensions/postgis_topology/sql_bits/remove_from_extension.sql.in: + fix website links to go to postgis.net + +2014-02-25 17:54 pramsey + + * postgis/geography_measurement_trees.c, + postgis/gserialized_estimate.c: Fix variable decls in debugs, + closes #2650 + +2014-02-24 10:25 strk + + * NEWS, postgis/postgis.sql.in: Let users without topology + privileges call postgis_full_version() + + Closes #2655 + +2014-02-24 07:08 strk + + * NEWS, topology/sql/sqlmm.sql.in: Drop deprecated calls from + topology (#2654) + +2014-02-24 06:41 strk + + * NEWS, topology/sql/export/TopoJSON.sql.in, + topology/sql/populate.sql.in, topology/sql/sqlmm.sql.in: Fully + qualify calls to topology methods (#2653) + +2014-02-23 16:32 strk + + * utils/postgis_proc_upgrade.pl: Fix AGG signatures with multi-word + typenames + + For example... "double precision". + This fixes upgrades involving drop/recreate of aggregates + +2014-02-23 16:32 strk + + * regress/run_test.pl: Fix --extension --upgrade handling + +2014-02-23 16:32 strk + + * regress/tickets.sql: Fix ambiguous query in tickets.sql when + raster support is loaded + + See #2651 + +2014-02-23 16:09 strk + + * regress/run_test.pl: Add support for --extension --upgrade in + run_test.pl + +2014-02-23 15:27 strk + + * extensions/postgis/Makefile.in: Do not force extension-specific + removal of objects on upgrade + + It should be taken care of by the upgrade scripts themselves + +2014-02-22 14:57 strk + + * raster/rt_pg/Makefile.in, raster/rt_pg/rtpostgis.sql.in: Generate + raster upgrade script using postgis_proc_upgrade + +2014-02-22 14:57 strk + + * utils/postgis_proc_upgrade.pl: Make postgis_proc_upgrade ready to + deal with rtpostgis.sql + +2014-02-22 09:13 strk + + * NEWS, utils/postgis_proc_upgrade.pl: Soft upgrade: avoid + drop/recreate of aggregates that hadn't changed + + Closes #2560 + +2014-02-22 09:13 strk + + * topology/sql/topoelement/topoelement_agg.sql.in: Encode + availability of topology aggregates + + See #2560 + +2014-02-22 09:13 strk + + * raster/rt_pg/rtpostgis.sql.in: Encode availability and last + change in raster aggregates + + See #2560 + +2014-02-22 08:32 strk + + * NEWS, topology/sql/sqlmm.sql.in: Fully qualify topology.topology + (#2648) + +2014-02-20 05:46 robe + + * doc/reference_measure.xml: #2646 typo arithmetric -> arithmetric + in ST_Centroid + +2014-02-14 03:30 robe + + * doc/using_raster_dataman.xml: #2576 Error in manual wrt + using_raster RT_PLPython + +2014-02-14 03:23 robe + + * doc/reference_constructor.xml: #2582 fix all references to -1 in + constructors and change to 0 (SRID Unknown) + +2014-02-05 05:25 pramsey + + * regress/empty.sql, regress/sql-mm-curvepoly.sql, + regress/sql-mm-curvepoly_expected: #2396, wrap wkb outputting + tests in explicit endianness + +2014-02-04 23:17 pramsey + + * NEWS, postgis/gserialized_estimate.c: #2615, EstimatedExtent (and + hence, underlying stats) gathering wrong bbox + +2014-02-04 22:43 pramsey + + * NEWS, postgis/gserialized_estimate.c: #2543, invalid join + selectivity error from simple query + +2014-02-04 19:44 pramsey + + * NEWS: #2556 news entry + +2014-02-04 19:31 pramsey + + * regress/tickets.sql, regress/tickets_expected: #2556, regression + test + +2014-02-04 08:36 strk + + * doc/extras_topology.xml: Fix ST_ModEdgeSplit documentation + (#2633) + +2014-02-04 06:30 pramsey + + * postgis/geography_measurement_trees.c: #2422, geography + regression difference ST_DWithin + "Fix" actually just removes tolerance-stop from the distance + calculation + Question of why tolerance stop fails, remains open. + +2014-02-04 06:05 pramsey + + * postgis/geography_measurement_trees.c: Free tree on short circuit + +2014-02-04 06:01 pramsey + + * liblwgeom/lwgeodetic_tree.c, liblwgeom/lwgeodetic_tree.h: Add + circtree get point signature + +2014-02-04 05:56 pramsey + + * doc/faq.xml, doc/using_postgis_dataman.xml: Update docs on WKB + +2014-02-04 05:56 pramsey + + * HOWTO_RELEASE: Update SVN urls for osgeo https + +2014-02-04 05:47 pramsey + + * postgis/geography_measurement_trees.c: #2556, ST_Intersects + results depending on insert order + +2014-01-30 19:17 pramsey + + * java/jdbc/src/org/postgis/GeometryCollection.java: #2588, + GeometryCollection constructor parse defect for sub geometries + (POINTM,POLYGONM,...) of GEOMETRYCOLLECTIONM (From bergun) + +2014-01-22 16:21 strk + + * NEWS: Add notice about 2.0.0 having drop the SRID check in + operator && + +2014-01-17 03:46 dustymugs + + * NEWS, raster/rt_core/rt_api.c: Fix the inability to open more + than ~1024 unique out-db files in one process + +2014-01-13 22:49 strk + + * NEWS, topology/sql/sqlmm.sql.in: Ensure face splitting algorithm + uses the edge index (#2610) + +2014-01-04 17:45 dustymugs + + * NEWS, raster/rt_core/rt_api.c: Remove use of void pointers in + rt_raster_from_gdal_dataset to prevent void point arithemetics. + Ticket #2589 + +2014-01-01 02:18 robe + + * doc/extras_topology.xml: #2593: document topology relationship + functions intersects and equals. + +2013-12-19 17:29 strk + + * extensions/postgis_tiger_geocoder/Makefile.in: Ensure output dir + is created before attempting to write to it + + See https://travis-ci.org/postgis/postgis/builds/15654853#L1357 + +2013-12-18 15:54 strk + + * NEWS, postgis/postgis.sql.in: Do not allow installing postgis + twice in the same database (#2580) + + Checks for the presence of a "postgis_version" function, + and if found raises an exception with a message with + the schema containing it. + +2013-12-07 14:41 dustymugs + + * NEWS, raster/rt_pg/rt_pg.c, raster/test/regress/rt_reclass.sql, + raster/test/regress/rt_reclass_expected: fix parsing issue of + range arguments of ST_Reclass. Ticket #2555 + +2013-11-27 16:03 dustymugs + + * NEWS, raster/rt_pg/rtpostgis.sql.in, + raster/test/regress/rt_asjpeg.sql, + raster/test/regress/rt_asjpeg_expected, + raster/test/regress/rt_aspng.sql, + raster/test/regress/rt_aspng_expected, + raster/test/regress/rt_astiff.sql, + raster/test/regress/rt_astiff_expected: fix NULL raster handling + in ST_AsPNG, ST_AsJPEG and ST_AsTIFF + +2013-11-21 17:24 strk + + * NEWS, topology/sql/topogeometry/simplify.sql.in, + topology/test/regress/st_simplify.sql, + topology/test/regress/st_simplify_expected: Fix + ST_Simplify(TopoGeometry) for hierarchical topogeoms (#2547) + +2013-11-21 16:52 strk + + * doc/extras_topology.xml: Add link from TopoElement to + TopoElementArray + +2013-11-21 16:52 strk + + * raster/rt_pg/rtpostgis.sql.in: Fix dangling commutator for + raster/geometry OPERATOR ~ (#2532) + +2013-11-20 00:17 pramsey + + * NEWS, postgis/gserialized_gist_2d.c: #2494, Avoid unnecessary + memory copy in gserialized_datum_get_box2df_p + +2013-11-16 22:35 robe + + * HOWTO_RELEASE: minor tweaks to how to release + +2013-11-16 21:57 robe + + * extensions/upgradeable_versions.mk: #2544: fix extension script + (made a booboo last commit) + +2013-11-16 20:01 robe + + * HOWTO_RELEASE, Version.config, + extensions/upgradeable_versions.mk: #2544: change micro from svn + to devand clarify how to release docs + +2013-11-12 21:40 pramsey + + * liblwgeom/g_box.c: #2542, build on Centos/ RHEL 5 + +2013-11-08 19:46 pramsey + + * NEWS, Version.config: Set for next release + +2013-11-08 19:37 pramsey + + * NEWS, README.postgis, Version.config, + extensions/postgis/sql_bits/postgis--unpackaged.sql.in, + extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in, + extensions/postgis_topology/sql_bits/topology--unpackaged.sql.in: + Update all manual bits for 2.1.1 release + +2013-11-07 14:57 dustymugs + + * NEWS, raster/rt_pg/rtpostgis.sql.in, + raster/rt_pg/rtpostgis_upgrade_cleanup.sql.in, + raster/test/regress/tickets.sql: Add missing operators for + raster. Ticket #2532 + +2013-11-06 16:32 strk + + * NEWS, postgis/postgis.sql.in: Remove duplicated signatures + +2013-11-06 09:46 strk + + * NEWS, liblwgeom/cunit/cu_split.c, liblwgeom/lwgeom_geos_split.c: + Fix small memory leak in lwline_split_by_line (#2528) + + Thanks Alessandro Furieri for the report and test + +2013-11-06 09:42 strk + + * NEWS: tab to space + +2013-11-06 05:12 dustymugs + + * NEWS, raster/loader/raster2pgsql.c, raster/loader/raster2pgsql.h: + added -k to raster2pgsql for skipping band is NODATA check + +2013-11-05 19:57 pramsey + + * postgis/lwgeom_functions_basic.c: #2529, inconsistent behaviour + in ST_FlipCoordinates + +2013-11-05 18:25 pramsey + + * ChangeLog, NEWS, README.postgis, doc/release_notes.xml: Update + doco for 2.1.1 release + 2013-11-05 17:58 pramsey * extensions/postgis_tiger_geocoder/sql_bits, install-sh, postgis, diff -Nru postgis-2.1.1/configure postgis-2.1.2+dfsg/configure --- postgis-2.1.1/configure 2013-11-08 19:46:00.000000000 +0000 +++ postgis-2.1.2+dfsg/configure 2014-03-29 05:39:40.000000000 +0000 @@ -666,9 +666,9 @@ GTK_LIBS GTK_CFLAGS PKG_CONFIG +HAVE_JSON JSON_LDFLAGS JSON_CPPFLAGS -HAVE_JSON PROJ_LDFLAGS PROJ_CPPFLAGS POSTGIS_PROJ_VERSION @@ -15230,7 +15230,11 @@ if test "x$GPP" != "x"; then SQLPP="${GPP} -C -s \'" else - SQLPP="${CPP} -w -traditional-cpp" + if test "x${CPP}" != "x"; then + SQLPP="${CPP} -w -traditional-cpp" + else + as_fn_error $? "Required \"cpp\" command not found" "$LINENO" 5 + fi fi fi @@ -19180,7 +19184,6 @@ HAVE_JSON=no - # Check whether --with-json was given. if test "${with_json+set}" = set; then : withval=$with_json; CHECK_JSON="$withval" @@ -19220,12 +19223,20 @@ CPPFLAGS_SAVE="$CPPFLAGS" CPPFLAGS="$JSON_CPPFLAGS" -ac_fn_c_check_header_mongrel "$LINENO" "json/json.h" "ac_cv_header_json_json_h" "$ac_includes_default" +ac_fn_c_check_header_mongrel "$LINENO" "json-c/json.h" "ac_cv_header_json_c_json_h" "$ac_includes_default" +if test "x$ac_cv_header_json_c_json_h" = xyes; then : + HAVE_JSON=yes +else + + ac_fn_c_check_header_mongrel "$LINENO" "json/json.h" "ac_cv_header_json_json_h" "$ac_includes_default" if test "x$ac_cv_header_json_json_h" = xyes; then : HAVE_JSON=yes fi +fi + + CPPFLAGS="$CPPFLAGS_SAVE" LIBS_SAVE="$LIBS" @@ -19323,6 +19334,7 @@ + fi diff -Nru postgis-2.1.1/configure.ac postgis-2.1.2+dfsg/configure.ac --- postgis-2.1.1/configure.ac 2013-11-04 23:17:11.000000000 +0000 +++ postgis-2.1.2+dfsg/configure.ac 2014-03-26 09:22:54.000000000 +0000 @@ -40,7 +40,11 @@ if test "x$GPP" != "x"; then SQLPP="${GPP} -C -s \'" dnl Use better string support else - SQLPP="${CPP} -w -traditional-cpp" + if test "x${CPP}" != "x"; then + SQLPP="${CPP} -w -traditional-cpp" + else + AC_MSG_ERROR([Required "cpp" command not found]) + fi fi fi AC_SUBST([SQLPP]) @@ -747,7 +751,6 @@ CHECK_JSON=yes HAVE_JSON=no -AC_SUBST([HAVE_JSON]) AC_ARG_WITH([json], [AS_HELP_STRING([--without-json], [build without json-c support])], @@ -785,7 +788,8 @@ dnl Check that we can find the json/json.h header file CPPFLAGS_SAVE="$CPPFLAGS" CPPFLAGS="$JSON_CPPFLAGS" -AC_CHECK_HEADER([json/json.h], [HAVE_JSON=yes], []) +AC_CHECK_HEADER([json-c/json.h], [HAVE_JSON=yes], [ + AC_CHECK_HEADER([json/json.h], [HAVE_JSON=yes], [])]) CPPFLAGS="$CPPFLAGS_SAVE" dnl Ensure we can link against libjson @@ -802,6 +806,7 @@ AC_SUBST([JSON_CPPFLAGS]) AC_SUBST([JSON_LDFLAGS]) +AC_SUBST([HAVE_JSON]) fi dnl } diff -Nru postgis-2.1.1/debian/changelog postgis-2.1.2+dfsg/debian/changelog --- postgis-2.1.1/debian/changelog 2014-01-28 09:39:46.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/changelog 2014-04-07 14:38:58.000000000 +0000 @@ -1,3 +1,56 @@ +postgis (2.1.2+dfsg-2) unstable; urgency=medium + + * Fix arch-only builds by moving the maven-repo-helper dependency from + B-D-I to B-D. + + -- Markus Wanner Mon, 07 Apr 2014 16:36:07 +0200 + +postgis (2.1.2+dfsg-1) unstable; urgency=medium + + * Add myself to Uploaders. + * Update copyright file using copyright-format 1.0. + * Repack upstream tarball, remove OGC test cases with unclear license. + (closes: #743489) + * Add gbp.conf to use pristine-tar by default. + * Add man page for raster2pgsql. + (closes: #717307) + * Bump Debhelper compatibility to 9. + * Add partial German translation for documentation. + Thanks to Chris Leick for the patch. + (closes: #729284) + + -- Bas Couwenberg Fri, 04 Apr 2014 20:16:30 +0200 + +postgis (2.1.2-1) unstable; urgency=low + + * New upstream release, 2.1.1. Closes: #728724. + * Adapt liblwgeom package name and dependencies to match the new release + version number. + * Add a suggestion for postgis-doc. Closes: #737497. + * Refresh patches debian-versions, honor-build-flags, and + java-version-fix. + * Drop patches fix-kfreebsd, fix-big-endian, joinsel-issue2543, and + doc-resources - these got applied upstream. + * Add upstream issue number to patch fix-armel - that one hasn't been + applied upstream, yet. + + -- Markus Wanner Mon, 31 Mar 2014 13:07:07 +0200 + +postgis (2.1.1-6) unstable; urgency=low + + * Recommend postgresql-contrib-M.N for the fuzzystrmatch + extension, which postgis_tiger_decoder depends on. + * Update README.Debian, make sure the sql scripts are included in the + -scripts package for the newest Postgres version as well. + Closes: #724626. + * Correct java-version-fix, so the jar-version becomes 2.1.1 rather than + some rc. Closes: #721721. + * Deduplicate highly redundant .sql files in *-postgis-scripts. + * Drop the ored dependency on openjdk-6-jdk. + * Add a couple more files to the extend-diff-ignore. + + -- Markus Wanner Wed, 19 Mar 2014 10:16:41 +0100 + postgis (2.1.1-5) unstable; urgency=low * Use dh-autoreconf for up-to-date config.guess and config.sub. diff -Nru postgis-2.1.1/debian/compat postgis-2.1.2+dfsg/debian/compat --- postgis-2.1.1/debian/compat 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/compat 2014-04-05 19:33:47.000000000 +0000 @@ -1 +1 @@ -8 +9 diff -Nru postgis-2.1.1/debian/control postgis-2.1.2+dfsg/debian/control --- postgis-2.1.1/debian/control 2014-01-28 12:13:19.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/control 2014-04-07 14:40:01.000000000 +0000 @@ -3,14 +3,16 @@ Priority: optional Maintainer: Debian GIS Project Uploaders: Stephen Frost , Francesco Paolo - Lovergine , Markus Wanner -Build-Depends: debhelper (>= 8), dpkg-dev (>= 1.16.1~), autotools-dev, - flex, bison, libgeos-dev (>= 3.3), libjson0-dev (>= 0.9~), + Lovergine , Markus Wanner , + Bas Couwenberg +Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1~), autotools-dev, + flex, bison, rdfind, libgeos-dev (>= 3.3), libjson0-dev (>= 0.9~), libproj-dev (>= 4.6.0), libssl-dev, xsltproc, docbook, docbook-xsl, imagemagick, libcunit1-dev, dblatex, libxml2-dev (>= 2.5.0~), libgtk2.0-dev, libgdal-dev (>= 1.9.0~) | libgdal1-dev (>= 1.9.0~), - postgresql-server-dev-all, postgresql-common (>= 148~), postgresql -Build-Depends-Indep: openjdk-8-jdk | openjdk-7-jdk | openjdk-6-jdk, + postgresql-server-dev-all, postgresql-common (>= 148~), postgresql, + maven-repo-helper +Build-Depends-Indep: openjdk-8-jdk | openjdk-7-jdk, libpostgresql-jdbc-java, fastjar, libjts-java (>= 1.7), maven2, libmaven-clean-plugin-java, libmaven-jar-plugin-java, libsurefire-java, libmaven-compiler-plugin-java, @@ -23,7 +25,7 @@ Package: postgis Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Suggests: postgresql-9.3-postgis-2.1 +Suggests: postgresql-9.3-postgis-2.1, postgis-doc Description: Geographic objects support for PostgreSQL PostGIS adds support for geographic objects to the PostgreSQL object-relational database. In effect, PostGIS "spatially enables" @@ -66,7 +68,7 @@ . This package contains JDBC support for PostGIS. -Package: liblwgeom-2.1.1 +Package: liblwgeom-2.1.2 Architecture: any Section: libs Depends: ${shlibs:Depends}, libjson0 (>= 0.9~), ${misc:Depends} @@ -85,8 +87,8 @@ Package: liblwgeom-dev Architecture: any Section: libdevel -Depends: ${shlibs:Depends}, ${misc:Depends}, - liblwgeom-2.1.1 (= ${binary:Version}) +Depends: ${misc:Depends}, + liblwgeom-2.1.2 (= ${binary:Version}) Breaks: postgis (<< 2.0.0) Description: PostGIS "Lightweight Geometry" library - Development files PostGIS adds support for geographic objects to the PostgreSQL @@ -103,9 +105,9 @@ Package: postgresql-9.3-postgis-2.1 Depends: ${shlibs:Depends}, postgresql-9.3, - postgresql-9.3-postgis-scripts, liblwgeom-2.1.1, + postgresql-9.3-postgis-scripts, liblwgeom-2.1.2, ${misc:Depends} -Recommends: postgis +Recommends: postgis, postgresql-contrib-9.3 Breaks: postgis (<< 1.2.1) Architecture: any Description: Geographic objects support for PostgreSQL 9.3 diff -Nru postgis-2.1.1/debian/control.in postgis-2.1.2+dfsg/debian/control.in --- postgis-2.1.1/debian/control.in 2014-01-09 16:16:33.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/control.in 2014-04-07 14:37:25.000000000 +0000 @@ -3,14 +3,16 @@ Priority: optional Maintainer: Debian GIS Project Uploaders: Stephen Frost , Francesco Paolo - Lovergine , Markus Wanner -Build-Depends: debhelper (>= 8), dpkg-dev (>= 1.16.1~), autotools-dev, - flex, bison, libgeos-dev (>= 3.3), libjson0-dev (>= 0.9~), + Lovergine , Markus Wanner , + Bas Couwenberg +Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1~), autotools-dev, + flex, bison, rdfind, libgeos-dev (>= 3.3), libjson0-dev (>= 0.9~), libproj-dev (>= 4.6.0), libssl-dev, xsltproc, docbook, docbook-xsl, imagemagick, libcunit1-dev, dblatex, libxml2-dev (>= 2.5.0~), libgtk2.0-dev, libgdal-dev (>= 1.9.0~) | libgdal1-dev (>= 1.9.0~), - postgresql-server-dev-all, postgresql-common (>= 148~), postgresql -Build-Depends-Indep: openjdk-8-jdk | openjdk-7-jdk | openjdk-6-jdk, + postgresql-server-dev-all, postgresql-common (>= 148~), postgresql, + maven-repo-helper +Build-Depends-Indep: openjdk-8-jdk | openjdk-7-jdk, libpostgresql-jdbc-java, fastjar, libjts-java (>= 1.7), maven2, libmaven-clean-plugin-java, libmaven-jar-plugin-java, libsurefire-java, libmaven-compiler-plugin-java, @@ -23,7 +25,7 @@ Package: postgis Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Suggests: postgresql-NEWEST_PGVERSION-postgis-2.1 +Suggests: postgresql-NEWEST_PGVERSION-postgis-2.1, postgis-doc Description: Geographic objects support for PostgreSQL PostGIS adds support for geographic objects to the PostgreSQL object-relational database. In effect, PostGIS "spatially enables" @@ -66,7 +68,7 @@ . This package contains JDBC support for PostGIS. -Package: liblwgeom-2.1.1 +Package: liblwgeom-2.1.2 Architecture: any Section: libs Depends: ${shlibs:Depends}, libjson0 (>= 0.9~), ${misc:Depends} @@ -85,8 +87,8 @@ Package: liblwgeom-dev Architecture: any Section: libdevel -Depends: ${shlibs:Depends}, ${misc:Depends}, - liblwgeom-2.1.1 (= ${binary:Version}) +Depends: ${misc:Depends}, + liblwgeom-2.1.2 (= ${binary:Version}) Breaks: postgis (<< 2.0.0) Description: PostGIS "Lightweight Geometry" library - Development files PostGIS adds support for geographic objects to the PostgreSQL @@ -103,9 +105,9 @@ Package: postgresql-PGVERSION-postgis-2.1 Depends: ${shlibs:Depends}, postgresql-PGVERSION, - postgresql-PGVERSION-postgis-scripts, liblwgeom-2.1.1, + postgresql-PGVERSION-postgis-scripts, liblwgeom-2.1.2, ${misc:Depends} -Recommends: postgis +Recommends: postgis, postgresql-contrib-PGVERSION Breaks: postgis (<< 1.2.1) Architecture: any Description: Geographic objects support for PostgreSQL PGVERSION diff -Nru postgis-2.1.1/debian/copyright postgis-2.1.2+dfsg/debian/copyright --- postgis-2.1.1/debian/copyright 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/copyright 2014-04-05 19:33:47.000000000 +0000 @@ -1,46 +1,757 @@ -This package was debianized by Fabio Tranchitella on -Mon, 15 May 2006 14:49:25 +0200. - -Additional debianization and changes by Stephen Frost -on or about Wed, 31 May 2006 - -Additional debianization and changes by Stephen Frost -for PostGIS 1.2.1 on or about Mon, 28 May 2007 21:28:24 -0400 - -Additional debianization and changes by Markus Wanner -for PostGIS 2.0.3 on or about Mon, 15 Apr 2013 22:12:27 +0200 - -It was downloaded from http://www.postgis.org/download/ - -Copyright Holder: Refractions Research - Sandro Santilli, Paul Ramsey, - Jeff Lounsbury and Chris Hodgson - - lwgeom/lwgparse.c, lwgeom/wktparse.y and lwgeom/wktunparse.c: - Copyright holder: Ralph Mason ralph.mason@telogis.com, Telogis 2004 - - loader/dbfopen.c, loader/shapefil.h, loader/shpopen.c: - Copyright holder: Frank Warmerdam, warmerdam@pobox.com - - See CREDITS for a ful list of contributors. - - -License: - - This package 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 package 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 package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL-2'. +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: PostGIS +Upstream-Contact: PostGIS Developers +Source: http://download.osgeo.org/postgis/source/ +Comment: The OGC test cases are removed because they have unclear licensing, + the work is probably licesed under the OGC Document Notice which doesn't + permit modification. +Files-Excluded: extras/ogc_test_suite/* + +Files: astyle.sh + autogen.sh + extensions/opt_out.sh + extras/WFS_locks/WFS_locks.c + extras/rpm/patches/filter-requires-perl-Pg.sh + extras/tiger_geocoder/tiger_2011/create_geocode.sh + extras/tiger_geocoder/tiger_2011/legacy_import/tiger2008/import_tiger_shps.sh + extras/tiger_geocoder/tiger_2011/upgrade_geocoder.sh + extras/wkb_reader/printwkb.c + extras/wkb_reader/readwkb.c + extras/wkb_reader/wkbtest.h + java/jdbc/jtssrc/org/postgis/jts/JTSShape.java + liblwgeom/box2d.c + liblwgeom/cunit/cu_sfcgal.c + liblwgeom/cunit/cu_tester.h + liblwgeom/lwgeodetic_tree.c + liblwgeom/lwgeodetic_tree.h + liblwgeom/lwin_wkt.h + liblwgeom/lwin_wkt_lex.c + liblwgeom/lwprint.c + liblwgeom/lwtree.c + liblwgeom/lwtree.h + liblwgeom/lwutil.c + libpgcommon/gserialized_gist.h + libpgcommon/pgsql_compat.h + loader/getopt.c + loader/getopt.h + postgis/geography_measurement_trees.c + postgis/geography_measurement_trees.h + postgis/geometry_inout.c + postgis/lwgeom_box3d.c + postgis/lwgeom_inout.c + postgis/lwgeom_rtree.h + postgis/sqldefines.h + postgis_svn_revision.h + raster/test/regress/load_outdb-post.pl + raster/test/regress/load_outdb-post.sh + raster/test/regress/load_outdb-pre.pl + raster/test/regress/load_outdb-pre.sh + raster/test/regress/loader/Basic-post.pl + raster/test/regress/loader/Basic-post.sh + raster/test/regress/loader/Basic-pre.pl + raster/test/regress/loader/Basic-pre.sh + raster/test/regress/loader/BasicCopy-post.pl + raster/test/regress/loader/BasicCopy-post.sh + raster/test/regress/loader/BasicCopy-pre.pl + raster/test/regress/loader/BasicCopy-pre.sh + raster/test/regress/loader/BasicFilename-post.pl + raster/test/regress/loader/BasicFilename-post.sh + raster/test/regress/loader/BasicFilename-pre.pl + raster/test/regress/loader/BasicFilename-pre.sh + raster/test/regress/loader/BasicOutDB-post.pl + raster/test/regress/loader/BasicOutDB-post.sh + raster/test/regress/loader/BasicOutDB-pre.pl + raster/test/regress/loader/BasicOutDB-pre.sh + raster/test/regress/loader/Tiled10x10-post.pl + raster/test/regress/loader/Tiled10x10-post.sh + raster/test/regress/loader/Tiled10x10-pre.pl + raster/test/regress/loader/Tiled10x10-pre.sh + raster/test/regress/loader/Tiled10x10Copy-post.pl + raster/test/regress/loader/Tiled10x10Copy-post.sh + raster/test/regress/loader/Tiled10x10Copy-pre.pl + raster/test/regress/loader/Tiled10x10Copy-pre.sh + raster/test/regress/loader/Tiled8x8-post.pl + raster/test/regress/loader/Tiled8x8-post.sh + raster/test/regress/loader/Tiled8x8-pre.pl + raster/test/regress/loader/Tiled8x8-pre.sh + regress/run_test.pl + utils/profile_intersects.pl + utils/read_scripts_version.pl + utils/svn_repo_revision.pl + utils/test_estimation.pl + utils/test_geography_estimation.pl + utils/test_geography_joinestimation.pl + utils/test_joinestimation.pl +Copyright: Refractions Research + Sandro Santilli, + Paul Ramsey, + Jeff Lounsbury, + Chris Hodgson +License: GPL-2.0+ + +Files: liblwgeom/lwcircstring.c + liblwgeom/lwcollection.c + liblwgeom/lwcompound.c + liblwgeom/lwcurvepoly.c + liblwgeom/lwgeom.c + liblwgeom/lwgeom_api.c + liblwgeom/lwgeom_debug.c + liblwgeom/lwgeom_transform.c + liblwgeom/lwmcurve.c + liblwgeom/lwmline.c + liblwgeom/lwmpoint.c + liblwgeom/lwmpoly.c + liblwgeom/lwmsurface.c + liblwgeom/lwout_svg.c + liblwgeom/lwpoint.c + liblwgeom/lwpsurface.c + liblwgeom/lwsegmentize.c + liblwgeom/lwtin.c + libpgcommon/lwgeom_transform.c + libpgcommon/lwgeom_transform.h + loader/pgsql2shp-cli.c + loader/pgsql2shp-core.c + postgis/long_xact.c + postgis/lwgeom_dump.c + postgis/lwgeom_functions_analytic.c + postgis/lwgeom_functions_analytic.h + postgis/lwgeom_functions_basic.c + postgis/lwgeom_functions_lrs.c + postgis/lwgeom_ogc.c + postgis/lwgeom_rtree.c + postgis/lwgeom_spheroid.c + postgis/lwgeom_sqlmm.c + postgis/lwgeom_transform.c + postgis/lwgeom_triggers.c +Copyright: 2001-2003, Refractions Research Inc + 2001-2005, Refractions Research Inc + 2001-2006, Refractions Research Inc + 2001-2009, Refractions Research Inc + 2001-2011, Refractions Research Inc + 2004, Refractions Research Inc + 2006, Refractions Research Inc +License: GPL-2.0+ + +Files: liblwgeom/cunit/cu_geodetic.c + liblwgeom/cunit/cu_geodetic_data.h + liblwgeom/cunit/cu_in_wkb.c + liblwgeom/cunit/cu_in_wkt.c + liblwgeom/cunit/cu_libgeom.c + liblwgeom/cunit/cu_measures.c + liblwgeom/cunit/cu_out_wkb.c + liblwgeom/cunit/cu_out_wkt.c + liblwgeom/cunit/cu_tester.c + liblwgeom/g_box.c + liblwgeom/g_serialized.c + liblwgeom/g_util.c + liblwgeom/lwgeodetic.h + liblwgeom/lwin_wkb.c + liblwgeom/lwin_wkt.c + liblwgeom/lwout_wkb.c + liblwgeom/lwout_wkt.c + libpgcommon/gserialized_gist.c + postgis/geography.h + postgis/geography_btree.c + postgis/geography_inout.c + postgis/geography_measurement.c + postgis/gserialized_estimate.c + postgis/gserialized_gist_2d.c + postgis/gserialized_gist_nd.c + postgis/gserialized_typmod.c + postgis/lwgeom_geos.h + postgis/lwgeom_geos_prepared.h +Copyright: 2008, Paul Ramsey + 2009, Paul Ramsey + 2009-2011, Paul Ramsey + 2010, Paul Ramsey + 2012, Paul Ramsey +License: GPL-2.0+ + +Files: java/jdbc/jtssrc/org/postgis/jts/JtsBinaryParser.java + java/jdbc/jtssrc/org/postgis/jts/JtsBinaryWriter.java + java/jdbc/jtssrc/org/postgis/jts/JtsGeometry.java + java/jdbc/jtssrc/org/postgis/jts/JtsGisWrapper.java + java/jdbc/jtssrc/org/postgis/jts/JtsWrapper.java + java/jdbc/src/org/postgis/DriverWrapper.java + java/jdbc/src/org/postgis/DriverWrapperAutoprobe.java + java/jdbc/src/org/postgis/DriverWrapperLW.java + java/jdbc/src/org/postgis/PGgeometryLW.java + java/jdbc/src/org/postgis/Version.java + java/jdbc/src/org/postgis/binary/BinaryParser.java + java/jdbc/src/org/postgis/binary/BinaryWriter.java + java/jdbc/src/org/postgis/binary/ByteGetter.java + java/jdbc/src/org/postgis/binary/ByteSetter.java + java/jdbc/src/org/postgis/binary/ValueGetter.java + java/jdbc/src/org/postgis/binary/ValueSetter.java + java/jdbc/src/org/postgis/java2d/Java2DWrapper.java + java/jdbc/src/org/postgis/java2d/PGShapeGeometry.java + java/jdbc/src/org/postgis/java2d/ShapeBinaryParser.java +Copyright: 2005, Markus Schaber, markus.schaber@logix-tt.com +License: LGPL-2.1+ + +Files: doc/xsl/post_gis_day_cards.html.xsl + doc/xsl/postgis_aggs_mm.xml.xsl + doc/xsl/postgis_cheatsheet.html.xsl + doc/xsl/postgis_comments.sql.xsl + doc/xsl/postgis_gardentest.sql.xsl + doc/xsl/postgis_gardentest_subset.sql.xsl + doc/xsl/postgis_reference.xml.xsl + doc/xsl/raster_cheatsheet.html.xsl + doc/xsl/raster_comments.sql.xsl + doc/xsl/raster_gardentest.sql.xsl + doc/xsl/sfcgal_cheatsheet.html.xsl + doc/xsl/sfcgal_comments.sql.xsl + doc/xsl/tiger_geocoder_cheatsheet.html.xsl + doc/xsl/tiger_geocoder_comments.sql.xsl + doc/xsl/topology_cheatsheet.html.xsl + doc/xsl/topology_comments.sql.xsl + doc/xsl/topology_gardentest.sql.xsl + liblwgeom/cunit/cu_out_x3d.c +Copyright: 2008, Regina Obe + 2008-2010, Regina Obe + 2009, Regina Obe + 2010, Regina Obe + 2011, Regina Obe +License: GPL-2.0+ + +Files: liblwgeom/cunit/cu_buildarea.c + liblwgeom/cunit/cu_clean.c + liblwgeom/cunit/cu_geos.c + liblwgeom/cunit/cu_in_geojson.c + liblwgeom/cunit/cu_node.c + liblwgeom/cunit/cu_split.c + liblwgeom/cunit/cu_stringbuffer.c + liblwgeom/cunit/cu_tree.c + liblwgeom/cunit/cu_triangulate.c + liblwgeom/lwgeom_geos.c + liblwgeom/lwgeom_geos.h + liblwgeom/lwgeom_geos_clean.c + liblwgeom/lwgeom_geos_node.c + liblwgeom/lwgeom_geos_split.c + libpgcommon/lwgeom_cache.c + libpgcommon/lwgeom_cache.h + postgis/lwgeom_geos_clean.c + postgis/lwgeom_geos_relatematch.c +Copyright: 2009-2010, Sandro Santilli + 2010, Sandro Santilli + 2011, Sandro Santilli + 2011-2012, Sandro Santilli + 2012, Sandro Santilli + 2013, Sandro Santilli +License: GPL-2.0+ + +Files: java/jdbc/src/org/postgis/ComposedGeom.java + java/jdbc/src/org/postgis/Geometry.java + java/jdbc/src/org/postgis/GeometryCollection.java + java/jdbc/src/org/postgis/LineString.java + java/jdbc/src/org/postgis/LinearRing.java + java/jdbc/src/org/postgis/MultiLineString.java + java/jdbc/src/org/postgis/MultiPoint.java + java/jdbc/src/org/postgis/MultiPolygon.java + java/jdbc/src/org/postgis/PGbox2d.java + java/jdbc/src/org/postgis/PGbox3d.java + java/jdbc/src/org/postgis/PGboxbase.java + java/jdbc/src/org/postgis/PGgeometry.java + java/jdbc/src/org/postgis/Point.java + java/jdbc/src/org/postgis/PointComposedGeom.java + java/jdbc/src/org/postgis/Polygon.java +Copyright: 2004, Paul Ramsey, pramsey@refractions.net + 2005, Markus Schaber, markus.schaber@logix-tt.com +License: LGPL-2.1+ + +Files: raster/test/cunit/cu_band_basics.c + raster/test/cunit/cu_band_misc.c + raster/test/cunit/cu_band_stats.c + raster/test/cunit/cu_gdal.c + raster/test/cunit/cu_mapalgebra.c + raster/test/cunit/cu_misc.c + raster/test/cunit/cu_pixtype.c + raster/test/cunit/cu_raster_basics.c + raster/test/cunit/cu_raster_geometry.c + raster/test/cunit/cu_raster_misc.c + raster/test/cunit/cu_spatial_relationship.c +Copyright: 2012, Regents of the University of California + 2012-2013, Regents of the University of California + 2013, Regents of the University of California +License: GPL-2.0+ + +Files: liblwgeom/cunit/cu_force_sfs.c + liblwgeom/cunit/cu_homogenize.c + liblwgeom/cunit/cu_out_geojson.c + liblwgeom/cunit/cu_out_gml.c + liblwgeom/cunit/cu_out_kml.c + liblwgeom/cunit/cu_out_svg.c + liblwgeom/cunit/cu_surface.c + liblwgeom/cunit/cu_surface.h + liblwgeom/lwhomogenize.c + postgis/lwgeom_export.c + postgis/lwgeom_export.h +Copyright: 2009, Olivier Courtin + 2009-2011, Olivier Courtin + 2010, Olivier Courtin + 2010-2012, Olivier Courtin + 2013, Olivier Courtin +License: GPL-2.0+ + +Files: java/ejb3/src/org/postgis/ejb/PersonEntity.java + java/ejb3/src/org/postgis/ejb/UserBean.java + java/ejb3/src/org/postgis/ejb/UserBeanRemote.java + java/ejb3/src/org/postgis/ejb/mdb/IngestMDB.java + java/ejb3/src/org/postgis/hibernate/ContainsExpression.java + java/ejb3/src/org/postgis/hibernate/GeometryType.java + java/ejb3/src/org/postgis/hibernate/IntersectsExpression.java + java/ejb3/src/org/postgis/hibernate/PostGISDialect.java + java/ejb3/src/org/postgis/hibernate/WithinExpression.java +Copyright: 2006, Norman Barker +License: LGPL-2.1+ + +Files: raster/scripts/python/genraster.py + raster/scripts/python/ovdump.py + raster/scripts/python/pixval.py + raster/scripts/python/rtpixdump.py + raster/scripts/python/rtreader.py + raster/scripts/python/rtrowdump.py + raster/scripts/python/window.py +Copyright: 2009, Mateusz Loskot +License: GPL-2.0+ + +Files: java/jdbc/jtssrc/examples/JtsTestParser.java + java/jdbc/src/examples/Test.java + java/jdbc/src/examples/TestBoxes.java + java/jdbc/src/examples/TestJava2d.java + java/jdbc/src/examples/TestParser.java + java/jdbc/src/examples/TestServer.java +Copyright: 2004, Paul Ramsey, pramsey@refractions.net + 2005, Markus Schaber, markus.schaber@logix-tt.com +License: GPL-2.0+ + +Files: java/ejb2/src/com/geodetix/geo/client/Client.java + java/ejb2/src/com/geodetix/geo/dao/PostGisGeometryDAO.java + java/ejb2/src/com/geodetix/geo/dao/PostGisGeometryDAOImpl.java + java/ejb2/src/com/geodetix/geo/ejb/GeometryBean.java + java/ejb2/src/com/geodetix/geo/ejb/GeometryFacadeBean.java + java/ejb2/src/com/geodetix/geo/exception/ApplicationGeoLayerException.java +Copyright: 2006, Geodetix S.r.l. (http://www.geodetix.it) +License: LGPL-2.1+ + +Files: liblwgeom/lwgeom_sfcgal.c + liblwgeom/lwgeom_sfcgal.h + postgis/lwgeom_backend_api.c + postgis/lwgeom_backend_api.h + postgis/lwgeom_sfcgal.c + postgis/lwgeom_sfcgal.h +Copyright: 2012-2013, Oslandia +License: GPL-2.0+ + +Files: liblwgeom/cunit/cu_algorithm.c + liblwgeom/cunit/cu_misc.c + liblwgeom/cunit/cu_print.c + liblwgeom/lwalgorithm.c + liblwgeom/lwlinearreferencing.c + loader/cunit/cu_tester.c +Copyright: 2008, Paul Ramsey + 2011, Paul Ramsey +License: GPL-2.0+ + +Files: loader/dbfopen.c + loader/safileio.c + loader/shapefil.h + loader/shpopen.c +Copyright: 1999, 2001, Frank Warmerdam + 1999, Frank Warmerdam + 2007, Frank Warmerdam +License: MIT or LGPL-2.0+ + +Files: loader/cunit/cu_pgsql2shp.c + loader/cunit/cu_pgsql2shp.h + loader/cunit/cu_shp2pgsql.c + loader/cunit/cu_shp2pgsql.h +Copyright: 2010, LISAsoft Pty Ltd +License: GPL-2.0+ + +Files: raster/rt_core/rt_api.c + raster/rt_core/rt_api.h + raster/rt_pg/rt_pg.c +Copyright: 2008-2009, Sandro Santilli + 2009-2011, Mateusz Loskot + 2009-2011, Pierre Racine + 2010-2011, David Zwarg + 2010-2011, Jorge Arevalo + 2011-2013, Regents of the University of California +License: GPL-2.0+ + +Files: doc/html/image_src/generator.c + doc/html/image_src/styles.c + doc/html/image_src/styles.h +Copyright: 2008, Kevin Neufeld +License: GPL-2.0+ + +Files: liblwgeom/measures.h + liblwgeom/measures3d.c + liblwgeom/measures3d.h +Copyright: 2010, Nicklas Avén + 2011, Nicklas Avén +License: GPL-2.0+ + +Files: liblwgeom/lwtriangle.c + postgis/lwgeom_in_gml.c + postgis/lwgeom_in_kml.c +Copyright: 2009, Oslandia + 2009-2010, Oslandia + 2010, - Oslandia +License: GPL-2.0+ + +Files: liblwgeom/lwline.c + liblwgeom/lwpoly.c + liblwgeom/ptarray.c +Copyright: 2001-2006, Refractions Research Inc + 2012, Sandro Santilli +License: GPL-2.0+ + +Files: liblwgeom/stringbuffer.c + liblwgeom/stringbuffer.h +Copyright: 2002, Thamer Alharbash + 2009, Paul Ramsey +License: BSD-3-Clause + +Files: java/jdbc/src/examples/TestAutoregister.java + java/jdbc/src/examples/VersionPrinter.java +Copyright: 2005, Markus Schaber, markus.schaber@logix-tt.com +License: GPL-2.0+ + +Files: raster/loader/raster2pgsql.c + raster/loader/raster2pgsql.h +Copyright: 2001-2003, Refractions Research Inc + 2009, Mark Cave-Ayland + 2009, Paul Ramsey + 2011, Regents of the University of California +License: GPL-2.0+ + +Files: liblwgeom/lwin_wkt_parse.c + liblwgeom/lwin_wkt_parse.h +Copyright: 1984, 1989-1990, 2000-2011, Free Software Foundation, Inc +License: GPL-3.0+ + +Files: liblwgeom/lwgeodetic.c + liblwgeom/lwspheroid.c +Copyright: 2009, David Skea + 2009, Paul Ramsey +License: GPL-2.0+ + +Files: liblwgeom/liblwgeom_internal.h + liblwgeom/lwgeom_log.h +Copyright: 2001-2006, Refractions Research Inc + 2007-2008, Mark Cave-Ayland + 2008, Paul Ramsey + 2011, Paul Ramsey + 2011, Sandro Santilli + 2011-2012, Sandro Santilli +License: GPL-2.0+ + +Files: loader/shpcommon.c + loader/shpcommon.h +Copyright: 2010, Mark Cave-Ayland +License: GPL-2.0+ + +Files: loader/shp2pgsql-cli.c + loader/shp2pgsql-core.c +Copyright: 2008, OpenGeo.org + 2009, Mark Cave-Ayland +License: GPL-2.0+ + +Files: loader/pgsql2shp-core.h + loader/shp2pgsql-core.h +Copyright: 2001-2003, Refractions Research Inc + 2009, Mark Cave-Ayland + 2009, Paul Ramsey +License: GPL-2.0+ + +Files: libpgcommon/lwgeom_pg.c + libpgcommon/lwgeom_pg.h +Copyright: 2004-2007, Refractions Research Inc + 2008, Mark Cave-Ayland + 2009-2011, Paul Ramsey + 2011, Sandro Santilli +License: GPL-2.0+ + +Files: java/jdbc/stubs/org/postgresql/Connection.java + java/jdbc/stubs/org/postgresql/PGConnection.java +Copyright: 2003-2005, PostgreSQL Global Development Group + 2005, Markus Schaber +License: GPL-2.0+ + +Files: postgis/lwgeom_geos.c + postgis/lwgeom_geos_prepared.c +Copyright: 2001-2003, Refractions Research Inc + 2007, Refractions Research Inc + 2008, Paul Ramsey + 2009-2012, Sandro Santilli + 2012, Sandro Santilli +License: GPL-2.0+ + +Files: ltmain.sh +Copyright: 1996-2001, 2003-2011 +License: GPL-2.0+ with Libtool exception + +Files: raster/rt_pg/rt_pg.h +Copyright: 2008-2009, Sandro Santilli + 2009-2011, Mateusz Loskot + 2009-2011, Pierre Racine + 2010-2011, David Zwarg + 2010-2011, Jorge Arevalo +License: GPL-2.0+ + +Files: liblwgeom/vsprintf.c +Copyright: 1994, 1998-2001, Free Software Foundation, Inc +License: GPL-2.0+ + +Files: raster/scripts/python/raster2pgsql.py +Copyright: 2009-2010, Jorge Arevalo + 2009-2010, Mateusz Loskot + 2009-2011, Pierre Racine +License: GPL-2.0+ + +Files: raster/scripts/python/rtgdalraster.py +Copyright: 2009, Mateusz Loskot + 2011, Regents of the University of California +License: GPL-2.0+ + +Files: raster/test/cunit/cu_tester.c + raster/test/cunit/cu_tester.h +Copyright: 2008, Paul Ramsey +License: GPL-2.0+ + +Files: raster/test/cunit/cu_raster_wkb.c +Copyright: 2009, Sandro Santilli + 2012, Regents of the University of California +License: GPL-2.0+ + +Files: postgis/lwgeom_dumppoints.c +Copyright: disclaimed +License: public-domain + ST_DumpPoints for postgis. + By Nathan Wagner, copyright disclaimed, + this entire file is in the public domain + +Files: liblwgeom/lwout_x3d.c +Copyright: 2011, Arrival 3D +License: GPL-2.0+ + +Files: liblwgeom/lwout_kml.c +Copyright: 2006, Corporacion Autonoma Regional de Santander + 2010, Paul Ramsey +License: GPL-2.0+ + +Files: postgis/lwgeom_in_geohash.c +Copyright: 2012, J Smith +License: GPL-2.0+ + +Files: postgis/lwgeom_in_geojson.c +Copyright: 2011, Kashif Rasul +License: GPL-2.0+ + +Files: liblwgeom/lwin_geojson.c +Copyright: 2011, Kashif Rasul + 2013, Sandro Santilli +License: GPL-2.0+ + +Files: loader/shp2pgsql-gui.c +Copyright: 2008, OpenGeo.org + 2010, LISAsoft +License: GPL-2.0+ + +Files: postgis/lwgeom_btree.c +Copyright: 2009-2011, Paul Ramsey + 2010, Mark Cave-Ayland + 2010, Olivier Courtin +License: GPL-2.0+ + +Files: postgis/lwgeom_box.c +Copyright: 2001-2009, Refractions Research Inc + 2009, Mark Cave-Ayland +License: GPL-2.0+ + +Files: loader/cunit/cu_tester.h +Copyright: 2010, Mark Leslie +License: GPL-2.0+ + +Files: liblwgeom/measures.c +Copyright: 2001-2006, Refractions Research Inc + 2010, Nicklas Avén + 2012, Paul Ramsey +License: GPL-2.0+ + +Files: libpgcommon/common.h +Copyright: 2011, OSGeo +License: GPL-2.0+ + +Files: liblwgeom/lwout_geojson.c +Copyright: 2001-2003, Refractions Research Inc + 2009-2010, Olivier Courtin +License: GPL-2.0+ + +Files: postgis/postgis_module.c +Copyright: 2011, OpenGeo.org +License: GPL-2.0+ + +Files: utils/create_undef.pl +Copyright: 2001-2005, Refractions Research Inc + 2009-2010, Paul Ramsey + 2011, OpenGeo.org +License: GPL-2.0+ + +Files: liblwgeom/lwout_gml.c +Copyright: 2001-2003, Refractions Research Inc + 2010-2012, Oslandia + 2011, Sandro Santilli +License: GPL-2.0+ + +Files: liblwgeom/cunit/cu_ptarray.c +Copyright: 2008, Paul Ramsey + 2011, Sandro Santilli +License: GPL-2.0+ + +Files: postgis/lwgeom_accum.c +Copyright: 2009, Paul Ramsey +License: GPL-2.0+ + +Files: utils/postgis_proc_upgrade.pl +Copyright: 2005, Refractions Research Inc + 2009-2010, Paul Ramsey +License: GPL-2.0+ + +License: GPL-2.0+ with Libtool exception + 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. + . + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + +License: GPL-2.0+ + 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. + . + On Debian systems, the full text of the GNU General Public License + version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + +License: GPL-3.0+ + 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. + . + On Debian systems, the full text of the GNU General Public License + version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. + +License: LGPL-2.0+ + This 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. + . + This 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. + . + On Debian systems, the full text of the GNU Library General Public + License version 2 can be found in the file + `/usr/share/common-licenses/LGPL-2'. + +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This 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 + Lesser General Public License for more details. + . + On Debian systems, the full text of the GNU Lesser General Public + License version 2.1 can be found in the file + `/usr/share/common-licenses/LGPL-2.1'. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or + without modification, are permitted provided that the following + conditions are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 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. + . + The name of the author may not be used to endorse or promote + products derived from this software without specific prior + written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR + 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. diff -Nru postgis-2.1.1/debian/gbp.conf postgis-2.1.2+dfsg/debian/gbp.conf --- postgis-2.1.1/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/gbp.conf 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,16 @@ +[DEFAULT] + +# The default name for the upstream branch is "upstream". +# Change it if the name is different (for instance, "master"). +upstream-branch = upstream + +# The default name for the Debian branch is "master". +# Change it if the name is different (for instance, "debian/unstable"). +debian-branch = master + +# git-import-orig uses the following names for the upstream tags. +# Change the value if you are not using git-import-orig +upstream-tag = upstream/%(version)s + +# Always use pristine-tar. +pristine-tar = True diff -Nru postgis-2.1.1/debian/get-orig-source postgis-2.1.2+dfsg/debian/get-orig-source --- postgis-2.1.1/debian/get-orig-source 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/get-orig-source 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,25 @@ +#!/bin/sh -x +# Repack tarball because of data files with unclear license, +# probably non-free OGC Document Notice licesed. + +set -e + +# Remark: A new uscan that enables easier handling of removing files can be +# obtained via +# git clone git://tille@git.debian.org/git/users/tille/devscripts.git +# and then copy scripts/uscan.pl as uscan at the beginning of your PATH +if uscan --help | grep -q -- --repack-compression ; then + echo "Use new enhanced uscan" + uscan --verbose --force-download + exit +fi + +# Falling back to manually removing files + +PACKAGE=`dpkg-parsechangelog | sed -n 's/^Source: //p'` +VERSION=`dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p' | sed -e 's/\+.*//'` + +uscan --verbose --force-download --no-symlink + +gunzip -c ../${PACKAGE}-${VERSION}.tar.gz | tar --delete --wildcards -vf - ${PACKAGE}-${VERSION}/extras/ogc_test_suite/\* | GZIP="--best --no-name" gzip -c > ../${PACKAGE}_${VERSION}+dfsg.orig.tar.gz + diff -Nru postgis-2.1.1/debian/liblwgeom-2.1.1.install postgis-2.1.2+dfsg/debian/liblwgeom-2.1.1.install --- postgis-2.1.1/debian/liblwgeom-2.1.1.install 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/liblwgeom-2.1.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/liblwgeom-2.1.1.so diff -Nru postgis-2.1.1/debian/liblwgeom-2.1.1.symbols postgis-2.1.2+dfsg/debian/liblwgeom-2.1.1.symbols --- postgis-2.1.1/debian/liblwgeom-2.1.1.symbols 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/liblwgeom-2.1.1.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,695 +0,0 @@ -liblwgeom-2.1.1.so liblwgeom-2.1.1 #MINVER# - GEOS2LWGEOM@Base 2.0.0 - LWGEOM2GEOS@Base 2.0.0 - LWGEOM_GEOS_buildArea@Base 2.0.0 - LWGEOM_GEOS_getPointN@Base 2.0.0 - azimuth_pt_pt@Base 2.0.0 - box2d_clone@Base 2.0.0 - box3d_from_gbox@Base 2.0.0 - box3d_to_gbox@Base 2.0.0 - bytes_from_hexbytes@Base 2.0.0 - cart2geog@Base 2.0.0 - circ_tree_contains_point@Base 2.1.0 - circ_tree_distance_tree@Base 2.1.0 - circ_tree_free@Base 2.1.0 - circ_tree_new@Base 2.1.0 - circ_tree_print@Base 2.1.0 - clairaut_cartesian@Base 2.0.0 - clairaut_geographic@Base 2.0.0 - clamp_srid@Base 2.0.0 - closest_point_on_segment@Base 2.0.0 - crosses_dateline@Base 2.0.0 - decode_geohash_bbox@Base 2.1.0 - define_plane@Base 2.0.0 - deparse_hex@Base 2.0.0 - distance2d_pt_pt@Base 2.0.0 - distance2d_pt_seg@Base 2.0.0 - dumb_upper_map@Base 2.0.2 - edge_calculate_gbox@Base 2.0.0 - edge_calculate_gbox_slow@Base 2.0.0 - edge_contains_coplanar_point@Base 2.0.0 - edge_contains_point@Base 2.0.0 - edge_distance_to_edge@Base 2.0.0 - edge_distance_to_point@Base 2.0.0 - edge_intersection@Base 2.0.0 - edge_intersects@Base 2.1.0 - edge_point_in_cone@Base 2.0.0 - edge_point_on_plane@Base 2.0.0 - error_if_srid_mismatch@Base 2.0.0 - gbox_angular_height@Base 2.1.0 - gbox_angular_width@Base 2.1.0 - gbox_centroid@Base 2.1.0 - gbox_clone@Base 2.0.2 - gbox_contains_point3d@Base 2.0.0 - gbox_copy@Base 2.0.0 - gbox_duplicate@Base 2.0.0 - gbox_expand@Base 2.0.0 - gbox_float_round@Base 2.0.0 - gbox_from_string@Base 2.0.0 - gbox_geocentric_slow@Base 2.0.0 - gbox_init@Base 2.0.0 - gbox_init_point3d@Base 2.1.0 - gbox_is_valid@Base 2.1.0 - gbox_merge@Base 2.0.0 - gbox_merge_point3d@Base 2.0.0 - gbox_new@Base 2.0.0 - gbox_overlaps@Base 2.0.0 - gbox_overlaps_2d@Base 2.0.0 - gbox_pt_outside@Base 2.0.0 - gbox_same@Base 2.0.0 - gbox_serialized_size@Base 2.0.0 - gbox_to_string@Base 2.0.0 - gbox_union@Base 2.0.0 - geog2cart@Base 2.0.0 - geographic_point_equals@Base 2.0.0 - geographic_point_init@Base 2.0.0 - geohash_point@Base 2.0.0 - geohash_point_as_int@Base 2.1.0 - geometry_type_from_string@Base 2.0.0 - geomtype_struct_array@Base 2.0.0 - getMachineEndian@Base 2.0.0 - getPoint2d@Base 2.0.0 - getPoint2d_cp@Base 2.1.0 - getPoint2d_p@Base 2.0.0 - getPoint2d_p_ro@Base 2.0.0 - getPoint3dm@Base 2.0.0 - getPoint3dm_p@Base 2.0.0 - getPoint3dz@Base 2.0.0 - getPoint3dz_p@Base 2.0.0 - getPoint4d@Base 2.0.0 - getPoint4d_p@Base 2.0.0 - getPoint_internal@Base 2.0.0 - get_3dcross_product@Base 2.0.0 - get_3dvector_from_points@Base 2.0.0 - gflags@Base 2.0.0 - global_parser_result@Base 2.0.0 - gserialized_copy@Base 2.0.0 - gserialized_from_lwgeom@Base 2.0.0 - gserialized_from_lwgeom_size@Base 2.0.0 - gserialized_get_gbox_p@Base 2.0.0 - gserialized_get_srid@Base 2.0.0 - gserialized_get_type@Base 2.0.0 - gserialized_get_zm@Base 2.0.0 - gserialized_has_bbox@Base 2.0.0 - gserialized_has_m@Base 2.0.0 - gserialized_has_z@Base 2.0.0 - gserialized_is_empty@Base 2.0.0 - gserialized_ndims@Base 2.0.0 - gserialized_read_gbox_p@Base 2.0.0 - gserialized_set_srid@Base 2.0.0 - gserialized_to_string@Base 2.0.0 - hexbytes_from_bytes@Base 2.0.0 - interpolate_point4d@Base 2.0.0 - latitude_degrees_normalize@Base 2.0.0 - latitude_radians_normalize@Base 2.0.0 - ll2cart@Base 2.1.0 - longitude_degrees_normalize@Base 2.0.0 - longitude_radians_normalize@Base 2.0.0 - lw_arc_calculate_gbox_cartesian_2d@Base 2.1.0 - lw_arc_center@Base 2.1.0 - lw_arc_is_pt@Base 2.1.0 - lw_arc_length@Base 2.1.0 - lw_arc_side@Base 2.1.0 - lw_asprintf@Base 2.0.0 - lw_dist2d_arc_arc@Base 2.1.0 - lw_dist2d_check_overlap@Base 2.0.0 - lw_dist2d_circstring_circstring@Base 2.1.0 - lw_dist2d_circstring_curvepoly@Base 2.1.0 - lw_dist2d_circstring_poly@Base 2.1.0 - lw_dist2d_comp@Base 2.0.0 - lw_dist2d_curvepoly_curvepoly@Base 2.1.0 - lw_dist2d_distanceline@Base 2.0.0 - lw_dist2d_distancepoint@Base 2.0.0 - lw_dist2d_distpts_init@Base 2.1.0 - lw_dist2d_distribute_bruteforce@Base 2.0.0 - lw_dist2d_distribute_fast@Base 2.0.0 - lw_dist2d_fast_ptarray_ptarray@Base 2.0.0 - lw_dist2d_line_circstring@Base 2.1.0 - lw_dist2d_line_curvepoly@Base 2.1.0 - lw_dist2d_line_line@Base 2.0.0 - lw_dist2d_line_poly@Base 2.0.0 - lw_dist2d_point_circstring@Base 2.1.0 - lw_dist2d_point_curvepoly@Base 2.1.0 - lw_dist2d_point_line@Base 2.0.0 - lw_dist2d_point_point@Base 2.0.0 - lw_dist2d_point_poly@Base 2.0.0 - lw_dist2d_poly_curvepoly@Base 2.1.0 - lw_dist2d_poly_poly@Base 2.0.0 - lw_dist2d_pre_seg_seg@Base 2.0.0 - lw_dist2d_pt_arc@Base 2.1.0 - lw_dist2d_pt_pt@Base 2.0.0 - lw_dist2d_pt_ptarray@Base 2.0.0 - lw_dist2d_pt_ptarrayarc@Base 2.1.0 - lw_dist2d_pt_seg@Base 2.0.0 - lw_dist2d_ptarray_ptarray@Base 2.0.0 - lw_dist2d_ptarray_ptarrayarc@Base 2.1.0 - lw_dist2d_ptarrayarc_ptarrayarc@Base 2.1.0 - lw_dist2d_recursive@Base 2.0.0 - lw_dist2d_seg_arc@Base 2.1.0 - lw_dist2d_seg_seg@Base 2.0.0 - lw_dist2d_selected_seg_seg@Base 2.0.0 - lw_dist3d_distanceline@Base 2.0.0 - lw_dist3d_distancepoint@Base 2.0.0 - lw_dist3d_distribute_bruteforce@Base 2.0.0 - lw_dist3d_line_line@Base 2.0.0 - lw_dist3d_line_poly@Base 2.0.0 - lw_dist3d_point_line@Base 2.0.0 - lw_dist3d_point_point@Base 2.0.0 - lw_dist3d_point_poly@Base 2.0.0 - lw_dist3d_poly_poly@Base 2.0.0 - lw_dist3d_pt_poly@Base 2.0.0 - lw_dist3d_pt_pt@Base 2.0.0 - lw_dist3d_pt_ptarray@Base 2.0.0 - lw_dist3d_pt_seg@Base 2.0.0 - lw_dist3d_ptarray_poly@Base 2.0.0 - lw_dist3d_ptarray_ptarray@Base 2.0.0 - lw_dist3d_recursive@Base 2.0.0 - lw_dist3d_seg_seg@Base 2.0.0 - lw_get_int32_t@Base 2.0.0 - lw_get_uint32_t@Base 2.0.0 - lw_pt_in_arc@Base 2.1.0 - lw_pt_in_seg@Base 2.1.0 - lw_seg_length@Base 2.1.0 - lw_segment_intersects@Base 2.0.0 - lw_segment_side@Base 2.0.0 - lw_vasprintf@Base 2.0.0 - lwalloc@Base 2.0.0 - lwalloc_var@Base 2.0.0 - lwcircstring_addpoint@Base 2.0.0 - lwcircstring_as_lwgeom@Base 2.0.0 - lwcircstring_clone@Base 2.0.0 - lwcircstring_construct@Base 2.0.0 - lwcircstring_construct_empty@Base 2.0.0 - lwcircstring_free@Base 2.0.0 - lwcircstring_from_lwmpoint@Base 2.0.0 - lwcircstring_from_lwpointarray@Base 2.0.0 - lwcircstring_get_lwpoint@Base 2.1.0 - lwcircstring_is_closed@Base 2.0.0 - lwcircstring_is_empty@Base 2.0.0 - lwcircstring_length@Base 2.0.0 - lwcircstring_length_2d@Base 2.0.0 - lwcircstring_release@Base 2.0.0 - lwcircstring_removepoint@Base 2.0.0 - lwcircstring_reverse@Base 2.0.0 - lwcircstring_same@Base 2.0.0 - lwcircstring_segmentize@Base 2.0.0 - lwcircstring_setPoint4d@Base 2.0.0 - lwcollection_add_lwgeom@Base 2.0.0 - lwcollection_allows_subtype@Base 2.0.0 - lwcollection_as_lwgeom@Base 2.0.0 - lwcollection_clone@Base 2.0.0 - lwcollection_clone_deep@Base 2.0.0 - lwcollection_construct@Base 2.0.0 - lwcollection_construct_empty@Base 2.0.0 - lwcollection_count_vertices@Base 2.0.0 - lwcollection_extract@Base 2.0.0 - lwcollection_force_dims@Base 2.0.0 - lwcollection_free@Base 2.0.0 - lwcollection_getsubgeom@Base 2.0.0 - lwcollection_is_empty@Base 2.0.0 - lwcollection_make_geos_friendly@Base 2.0.0 - lwcollection_ngeoms@Base 2.0.0 - lwcollection_release@Base 2.0.0 - lwcollection_remove_repeated_points@Base 2.0.0 - lwcollection_reserve@Base 2.0.0 - lwcollection_same@Base 2.0.0 - lwcollection_segmentize2d@Base 2.0.0 - lwcollection_segmentize@Base 2.0.0 - lwcollection_simplify@Base 2.0.0 - lwcollection_startpoint@Base 2.1.0 - lwcompound_add_lwgeom@Base 2.0.0 - lwcompound_as_lwgeom@Base 2.0.0 - lwcompound_construct_empty@Base 2.0.0 - lwcompound_contains_point@Base 2.1.0 - lwcompound_is_closed@Base 2.0.0 - lwcompound_length@Base 2.0.0 - lwcompound_length_2d@Base 2.0.0 - lwcompound_segmentize@Base 2.0.0 - lwcurvepoly_add_ring@Base 2.0.0 - lwcurvepoly_area@Base 2.0.0 - lwcurvepoly_as_lwgeom@Base 2.0.0 - lwcurvepoly_construct_empty@Base 2.0.0 - lwcurvepoly_construct_from_lwpoly@Base 2.1.0 - lwcurvepoly_perimeter@Base 2.0.0 - lwcurvepoly_perimeter_2d@Base 2.0.0 - lwcurvepoly_segmentize@Base 2.0.0 - lwerror@Base 2.0.0 - lwerror_var@Base 2.0.0 - lwfree@Base 2.0.0 - lwfree_var@Base 2.0.0 - lwgeom_add_bbox@Base 2.0.0 - lwgeom_add_bbox_deep@Base 2.0.2 - lwgeom_affine@Base 2.0.0 - lwgeom_area@Base 2.0.0 - lwgeom_area_sphere@Base 2.0.0 - lwgeom_area_spheroid@Base 2.0.0 - lwgeom_as_lwcircstring@Base 2.0.0 - lwgeom_as_lwcollection@Base 2.0.0 - lwgeom_as_lwcompound@Base 2.0.0 - lwgeom_as_lwcurvepoly@Base 2.0.0 - lwgeom_as_lwline@Base 2.0.0 - lwgeom_as_lwmline@Base 2.0.0 - lwgeom_as_lwmpoint@Base 2.0.0 - lwgeom_as_lwmpoly@Base 2.0.0 - lwgeom_as_lwpoint@Base 2.0.0 - lwgeom_as_lwpoly@Base 2.0.0 - lwgeom_as_lwpsurface@Base 2.0.0 - lwgeom_as_lwtin@Base 2.0.0 - lwgeom_as_lwtriangle@Base 2.0.0 - lwgeom_as_multi@Base 2.0.0 - lwgeom_azumith_spheroid@Base 2.0.0 - lwgeom_buildarea@Base 2.0.0 - lwgeom_calculate_circ_tree@Base 2.1.0 - lwgeom_calculate_gbox@Base 2.0.0 - lwgeom_calculate_gbox_cartesian@Base 2.0.0 - lwgeom_calculate_gbox_geodetic@Base 2.0.0 - lwgeom_check_geodetic@Base 2.0.0 - lwgeom_clip_to_ordinate_range@Base 2.0.0 - lwgeom_clone@Base 2.0.0 - lwgeom_clone_deep@Base 2.0.0 - lwgeom_construct_empty@Base 2.0.0 - lwgeom_contains_point@Base 2.1.0 - lwgeom_count_rings@Base 2.0.0 - lwgeom_count_vertices@Base 2.0.0 - lwgeom_covers_lwgeom_sphere@Base 2.0.0 - lwgeom_delaunay_triangulation@Base 2.1.0 - lwgeom_desegmentize@Base 2.0.0 - lwgeom_difference@Base 2.0.0 - lwgeom_dimension@Base 2.0.0 - lwgeom_dimensionality@Base 2.0.0 - lwgeom_distance_spheroid@Base 2.0.0 - lwgeom_drop_bbox@Base 2.0.0 - lwgeom_drop_srid@Base 2.0.0 - lwgeom_extent_to_gml2@Base 2.0.0 - lwgeom_extent_to_gml3@Base 2.0.0 - lwgeom_flip_coordinates@Base 2.0.0 - lwgeom_force_2d@Base 2.0.0 - lwgeom_force_3dm@Base 2.0.0 - lwgeom_force_3dz@Base 2.0.0 - lwgeom_force_4d@Base 2.0.0 - lwgeom_force_clockwise@Base 2.0.0 - lwgeom_force_dims@Base 2.0.0 - lwgeom_force_geodetic@Base 2.1.0 - lwgeom_force_sfs@Base 2.1.0 - lwgeom_free@Base 2.0.0 - lwgeom_from_geojson@Base 2.1.0 - lwgeom_from_gserialized@Base 2.0.0 - lwgeom_from_hexwkb@Base 2.0.0 - lwgeom_from_wkb@Base 2.0.0 - lwgeom_from_wkb_state@Base 2.0.0 - lwgeom_from_wkt@Base 2.0.0 - lwgeom_geohash@Base 2.0.0 - lwgeom_geohash_precision@Base 2.0.0 - lwgeom_geos_errmsg@Base 2.0.0 - lwgeom_geos_error@Base 2.0.0 - lwgeom_geos_noop@Base 2.0.0 - lwgeom_geos_version@Base 2.0.0 - lwgeom_get_bbox@Base 2.0.0 - lwgeom_get_srid@Base 2.0.0 - lwgeom_get_type@Base 2.1.0 - lwgeom_has_arc@Base 2.0.0 - lwgeom_has_m@Base 2.0.0 - lwgeom_has_srid@Base 2.0.0 - lwgeom_has_z@Base 2.0.0 - lwgeom_homogenize@Base 2.0.0 - lwgeom_interpolate_point@Base 2.0.0 - lwgeom_intersection@Base 2.0.0 - lwgeom_is_closed@Base 2.0.0 - lwgeom_is_collection@Base 2.0.0 - lwgeom_is_empty@Base 2.0.0 - lwgeom_length@Base 2.0.0 - lwgeom_length_2d@Base 2.0.0 - lwgeom_length_spheroid@Base 2.0.0 - lwgeom_locate_along@Base 2.0.0 - lwgeom_locate_between@Base 2.0.0 - lwgeom_longitude_shift@Base 2.0.0 - lwgeom_make_valid@Base 2.0.0 - lwgeom_maxdistance2d@Base 2.0.0 - lwgeom_maxdistance2d_tolerance@Base 2.0.0 - lwgeom_maxdistance3d@Base 2.0.0 - lwgeom_maxdistance3d_tolerance@Base 2.0.0 - lwgeom_mindistance2d@Base 2.0.0 - lwgeom_mindistance2d_tolerance@Base 2.0.0 - lwgeom_mindistance3d@Base 2.0.0 - lwgeom_mindistance3d_tolerance@Base 2.0.0 - lwgeom_ndims@Base 2.0.0 - lwgeom_needs_bbox@Base 2.0.0 - lwgeom_node@Base 2.0.0 - lwgeom_normalize@Base 2.0.1 - lwgeom_nudge_geodetic@Base 2.0.0 - lwgeom_offsetcurve@Base 2.0.0 - lwgeom_parse_wkt@Base 2.0.0 - lwgeom_parser_result_free@Base 2.0.0 - lwgeom_parser_result_init@Base 2.0.0 - lwgeom_perimeter@Base 2.0.0 - lwgeom_perimeter_2d@Base 2.0.0 - lwgeom_project_spheroid@Base 2.0.0 - lwgeom_release@Base 2.0.0 - lwgeom_remove_repeated_points@Base 2.0.0 - lwgeom_reverse@Base 2.0.0 - lwgeom_same@Base 2.0.0 - lwgeom_segmentize2d@Base 2.0.0 - lwgeom_segmentize@Base 2.0.0 - lwgeom_segmentize_sphere@Base 2.1.0 - lwgeom_set_geodetic@Base 2.0.0 - lwgeom_set_handlers@Base 2.1.0 - lwgeom_set_srid@Base 2.0.0 - lwgeom_sharedpaths@Base 2.0.0 - lwgeom_simplify@Base 2.0.0 - lwgeom_snap@Base 2.0.0 - lwgeom_split@Base 2.0.0 - lwgeom_startpoint@Base 2.1.0 - lwgeom_summary@Base 2.0.0 - lwgeom_symdifference@Base 2.0.0 - lwgeom_to_ewkt@Base 2.0.0 - lwgeom_to_geojson@Base 2.0.0 - lwgeom_to_gml2@Base 2.0.0 - lwgeom_to_gml3@Base 2.0.0 - lwgeom_to_hexwkb@Base 2.0.0 - lwgeom_to_kml2@Base 2.0.0 - lwgeom_to_svg@Base 2.0.0 - lwgeom_to_wkb@Base 2.0.0 - lwgeom_to_wkt@Base 2.0.0 - lwgeom_to_x3d3@Base 2.0.0 - lwgeom_transform@Base 2.0.0 - lwgeom_union@Base 2.0.0 - lwline_add_lwpoint@Base 2.0.0 - lwline_as_lwgeom@Base 2.0.0 - lwline_clip_to_ordinate_range@Base 2.0.0 - lwline_clone@Base 2.0.0 - lwline_clone_deep@Base 2.0.0 - lwline_construct@Base 2.0.0 - lwline_construct_empty@Base 2.0.0 - lwline_count_vertices@Base 2.0.0 - lwline_crossing_direction@Base 2.0.0 - lwline_desegmentize@Base 2.0.0 - lwline_force_dims@Base 2.0.0 - lwline_free@Base 2.0.0 - lwline_from_lwgeom_array@Base 2.0.0 - lwline_from_lwmpoint@Base 2.0.0 - lwline_from_ptarray@Base 2.0.0 - lwline_get_lwpoint@Base 2.0.0 - lwline_is_closed@Base 2.0.0 - lwline_is_empty@Base 2.0.0 - lwline_length@Base 2.0.0 - lwline_length_2d@Base 2.0.0 - lwline_make_geos_friendly@Base 2.0.0 - lwline_measured_from_lwline@Base 2.0.0 - lwline_release@Base 2.0.0 - lwline_remove_repeated_points@Base 2.0.0 - lwline_removepoint@Base 2.0.0 - lwline_reverse@Base 2.0.0 - lwline_same@Base 2.0.0 - lwline_segmentize2d@Base 2.0.0 - lwline_setPoint4d@Base 2.0.0 - lwline_simplify@Base 2.0.0 - lwline_split_by_point_to@Base 2.0.0 - lwmcurve_segmentize@Base 2.0.0 - lwmessage_truncate@Base 2.0.0 - lwmline_add_lwline@Base 2.0.0 - lwmline_as_lwgeom@Base 2.0.0 - lwmline_clip_to_ordinate_range@Base 2.0.0 - lwmline_construct_empty@Base 2.0.0 - lwmline_desegmentize@Base 2.0.0 - lwmline_free@Base 2.0.0 - lwmline_measured_from_lwmline@Base 2.0.0 - lwmline_release@Base 2.0.0 - lwmpoint_add_lwpoint@Base 2.0.0 - lwmpoint_as_lwgeom@Base 2.0.0 - lwmpoint_clip_to_ordinate_range@Base 2.0.0 - lwmpoint_construct@Base 2.0.0 - lwmpoint_construct_empty@Base 2.0.0 - lwmpoint_free@Base 2.0.0 - lwmpoint_release@Base 2.0.0 - lwmpoint_remove_repeated_points@Base 2.0.0 - lwmpoly_add_lwpoly@Base 2.0.0 - lwmpoly_as_lwgeom@Base 2.0.0 - lwmpoly_construct_empty@Base 2.0.0 - lwmpoly_free@Base 2.0.0 - lwmpoly_release@Base 2.0.0 - lwmpolygon_desegmentize@Base 2.0.0 - lwmsurface_segmentize@Base 2.0.0 - lwnotice@Base 2.0.0 - lwnotice_var@Base 2.0.0 - lwpoint_as_lwgeom@Base 2.0.0 - lwpoint_clip_to_ordinate_range@Base 2.0.0 - lwpoint_clone@Base 2.0.0 - lwpoint_construct@Base 2.0.0 - lwpoint_construct_empty@Base 2.0.0 - lwpoint_force_dims@Base 2.0.0 - lwpoint_free@Base 2.0.0 - lwpoint_getPoint2d_p@Base 2.0.0 - lwpoint_getPoint3dm_p@Base 2.0.0 - lwpoint_getPoint3dz_p@Base 2.0.0 - lwpoint_getPoint4d_p@Base 2.0.0 - lwpoint_get_m@Base 2.0.0 - lwpoint_get_ordinate@Base 2.0.0 - lwpoint_get_x@Base 2.0.0 - lwpoint_get_y@Base 2.0.0 - lwpoint_get_z@Base 2.0.0 - lwpoint_inside_circle@Base 2.1.0 - lwpoint_is_empty@Base 2.0.0 - lwpoint_make2d@Base 2.0.0 - lwpoint_make3dm@Base 2.0.0 - lwpoint_make3dz@Base 2.0.0 - lwpoint_make4d@Base 2.0.0 - lwpoint_make@Base 2.0.0 - lwpoint_release@Base 2.0.0 - lwpoint_same@Base 2.0.0 - lwpoint_set_ordinate@Base 2.0.0 - lwpoint_to_latlon@Base 2.0.0 - lwpoly_add_ring@Base 2.0.0 - lwpoly_area@Base 2.0.0 - lwpoly_as_lwgeom@Base 2.0.0 - lwpoly_clone@Base 2.0.0 - lwpoly_clone_deep@Base 2.0.0 - lwpoly_construct@Base 2.0.0 - lwpoly_construct_empty@Base 2.0.0 - lwpoly_count_vertices@Base 2.0.0 - lwpoly_covers_point2d@Base 2.0.0 - lwpoly_force_clockwise@Base 2.0.0 - lwpoly_force_dims@Base 2.0.0 - lwpoly_free@Base 2.0.0 - lwpoly_from_lwlines@Base 2.0.0 - lwpoly_is_closed@Base 2.0.1 - lwpoly_is_empty@Base 2.0.0 - lwpoly_make_geos_friendly@Base 2.0.0 - lwpoly_perimeter@Base 2.0.0 - lwpoly_perimeter_2d@Base 2.0.0 - lwpoly_release@Base 2.0.0 - lwpoly_remove_repeated_points@Base 2.0.0 - lwpoly_reverse@Base 2.0.0 - lwpoly_same@Base 2.0.0 - lwpoly_segmentize2d@Base 2.0.0 - lwpoly_simplify@Base 2.0.0 - lwpoly_startpoint@Base 2.1.0 - lwpolygon_desegmentize@Base 2.0.0 - lwproj_from_string@Base 2.0.0 - lwpsurface_add_lwpoly@Base 2.0.0 - lwpsurface_as_lwgeom@Base 2.0.0 - lwpsurface_free@Base 2.0.0 - lwpsurface_is_closed@Base 2.0.0 - lwrealloc@Base 2.0.0 - lwrealloc_var@Base 2.0.0 - lwtin_add_lwtriangle@Base 2.0.0 - lwtin_as_lwgeom@Base 2.0.0 - lwtin_free@Base 2.0.0 - lwtin_from_geos@Base 2.1.0 - lwtin_is_closed@Base 2.0.0 - lwtriangle_area@Base 2.0.0 - lwtriangle_as_lwgeom@Base 2.0.0 - lwtriangle_clone@Base 2.0.0 - lwtriangle_construct@Base 2.0.0 - lwtriangle_construct_empty@Base 2.0.0 - lwtriangle_force_clockwise@Base 2.0.0 - lwtriangle_free@Base 2.0.0 - lwtriangle_from_lwline@Base 2.0.0 - lwtriangle_is_empty@Base 2.0.0 - lwtriangle_is_repeated_points@Base 2.0.0 - lwtriangle_perimeter@Base 2.0.0 - lwtriangle_perimeter_2d@Base 2.0.0 - lwtriangle_release@Base 2.0.0 - lwtriangle_reverse@Base 2.0.0 - lwtriangle_same@Base 2.0.0 - lwtype_get_collectiontype@Base 2.0.0 - lwtype_is_collection@Base 2.0.0 - lwtype_name@Base 2.0.0 - next_double_down@Base 2.0.0 - next_double_up@Base 2.0.0 - next_float_down@Base 2.0.0 - next_float_up@Base 2.0.0 - normalize@Base 2.1.0 - p2d_same@Base 2.0.0 - p3d_same@Base 2.1.0 - p4d_same@Base 2.0.0 - parse_hex@Base 2.0.0 - parser_error_messages@Base 2.0.0 - point4d_transform@Base 2.0.0 - point_interpolate@Base 2.0.0 - point_shift@Base 2.0.0 - printBOX3D@Base 2.0.0 - printLWCIRCSTRING@Base 2.0.0 - printLWLINE@Base 2.0.0 - printLWPOINT@Base 2.0.0 - printLWPOLY@Base 2.0.0 - printLWPSURFACE@Base 2.0.0 - printLWTIN@Base 2.0.0 - printLWTRIANGLE@Base 2.0.0 - printPA@Base 2.0.0 - project_point_on_plane@Base 2.0.0 - pt_in_ring_2d@Base 2.0.0 - pt_in_ring_3d@Base 2.0.0 - pta_desegmentize@Base 2.0.0 - ptarray_addPoint@Base 2.0.0 - ptarray_affine@Base 2.0.0 - ptarray_append_point@Base 2.0.0 - ptarray_append_ptarray@Base 2.0.0 - ptarray_arc_length_2d@Base 2.1.1 - ptarray_area_sphere@Base 2.0.0 - ptarray_calculate_gbox_cartesian@Base 2.0.0 - ptarray_calculate_gbox_geodetic@Base 2.0.0 - ptarray_clone@Base 2.0.0 - ptarray_clone_deep@Base 2.0.0 - ptarray_close2d@Base 2.0.0 - ptarray_construct@Base 2.0.0 - ptarray_construct_copy_data@Base 2.0.0 - ptarray_construct_empty@Base 2.0.0 - ptarray_construct_reference_data@Base 2.0.0 - ptarray_contains_point@Base 2.0.2 - ptarray_contains_point_partial@Base 2.1.0 - ptarray_contains_point_sphere@Base 2.1.0 - ptarray_flip_coordinates@Base 2.0.0 - ptarray_force_dims@Base 2.0.0 - ptarray_free@Base 2.0.0 - ptarray_from_GEOSCoordSeq@Base 2.0.0 - ptarray_has_m@Base 2.0.0 - ptarray_has_z@Base 2.0.0 - ptarray_insert_point@Base 2.0.0 - ptarray_is_closed@Base 2.1.0 - ptarray_is_closed_2d@Base 2.1.0 - ptarray_is_closed_3d@Base 2.1.0 - ptarray_is_closed_z@Base 2.1.0 - ptarray_isccw@Base 2.0.0 - ptarray_length@Base 2.0.0 - ptarray_length_2d@Base 2.0.0 - ptarray_length_spheroid@Base 2.0.0 - ptarray_locate_point@Base 2.0.0 - ptarray_longitude_shift@Base 2.0.0 - ptarray_merge@Base 2.0.0 - ptarray_point_size@Base 2.0.0 - ptarray_removePoint@Base 2.0.0 - ptarray_remove_point@Base 2.0.0 - ptarray_remove_repeated_points@Base 2.0.0 - ptarray_reverse@Base 2.0.0 - ptarray_same@Base 2.0.0 - ptarray_segmentize2d@Base 2.0.0 - ptarray_set_point4d@Base 2.0.0 - ptarray_signed_area@Base 2.1.0 - ptarray_simplify@Base 2.0.0 - ptarray_startpoint@Base 2.1.0 - ptarray_substring@Base 2.0.0 - ptarray_to_GEOSCoordSeq@Base 2.0.0 - ptarray_transform@Base 2.0.0 - ptarrayarc_contains_point@Base 2.1.0 - ptarrayarc_contains_point_partial@Base 2.1.0 - rect_node_internal_new@Base 2.0.0 - rect_node_leaf_new@Base 2.0.0 - rect_tree_contains_point@Base 2.0.0 - rect_tree_free@Base 2.0.0 - rect_tree_intersects_tree@Base 2.0.0 - rect_tree_new@Base 2.0.0 - ring_make_geos_friendly@Base 2.0.0 - robust_cross_product@Base 2.0.0 - signum@Base 2.0.0 - sphere_direction@Base 2.1.0 - sphere_distance@Base 2.0.0 - sphere_distance_cartesian@Base 2.0.0 - sphere_project@Base 2.0.0 - spheroid_direction@Base 2.0.0 - spheroid_distance@Base 2.0.0 - spheroid_init@Base 2.0.0 - spheroid_project@Base 2.0.0 - stringbuffer_append@Base 2.0.0 - stringbuffer_aprintf@Base 2.0.0 - stringbuffer_clear@Base 2.0.0 - stringbuffer_copy@Base 2.0.0 - stringbuffer_create@Base 2.0.0 - stringbuffer_create_with_size@Base 2.0.0 - stringbuffer_destroy@Base 2.0.0 - stringbuffer_getlength@Base 2.0.0 - stringbuffer_getstring@Base 2.0.0 - stringbuffer_getstringcopy@Base 2.0.0 - stringbuffer_lastchar@Base 2.0.0 - stringbuffer_set@Base 2.0.0 - stringbuffer_trim_trailing_white@Base 2.0.0 - stringbuffer_trim_trailing_zeroes@Base 2.0.0 - struct_cmp_by_measure@Base 2.0.0 - trim_trailing_zeros@Base 2.0.0 - unit_normal@Base 2.1.0 - vector_angle@Base 2.1.0 - vector_rotate@Base 2.1.0 - vector_sum@Base 2.1.0 - wkt_lexer_close@Base 2.0.0 - wkt_lexer_init@Base 2.0.0 - wkt_lexer_read_srid@Base 2.0.0 - wkt_parser_circularstring_new@Base 2.0.0 - wkt_parser_collection_add_geom@Base 2.0.0 - wkt_parser_collection_finalize@Base 2.0.0 - wkt_parser_collection_new@Base 2.0.0 - wkt_parser_compound_add_geom@Base 2.0.0 - wkt_parser_coord_2@Base 2.0.0 - wkt_parser_coord_3@Base 2.0.0 - wkt_parser_coord_4@Base 2.0.0 - wkt_parser_curvepolygon_add_ring@Base 2.0.0 - wkt_parser_curvepolygon_finalize@Base 2.0.0 - wkt_parser_curvepolygon_new@Base 2.0.0 - wkt_parser_geometry_new@Base 2.0.0 - wkt_parser_linestring_new@Base 2.0.0 - wkt_parser_point_new@Base 2.0.0 - wkt_parser_polygon_add_ring@Base 2.0.0 - wkt_parser_polygon_finalize@Base 2.0.0 - wkt_parser_polygon_new@Base 2.0.0 - wkt_parser_ptarray_add_coord@Base 2.0.0 - wkt_parser_ptarray_new@Base 2.0.0 - wkt_parser_triangle_new@Base 2.0.0 - wkt_yy_create_buffer@Base 2.0.0 - wkt_yy_delete_buffer@Base 2.0.0 - wkt_yy_flex_debug@Base 2.0.0 - wkt_yy_flush_buffer@Base 2.0.0 - wkt_yy_scan_buffer@Base 2.0.0 - wkt_yy_scan_bytes@Base 2.0.0 - wkt_yy_scan_string@Base 2.0.0 - wkt_yy_switch_to_buffer@Base 2.0.0 - wkt_yyalloc@Base 2.0.0 - wkt_yychar@Base 2.0.0 - wkt_yydebug@Base 2.0.0 - wkt_yyerror@Base 2.0.0 - wkt_yyfree@Base 2.0.0 - wkt_yyget_debug@Base 2.0.0 - wkt_yyget_in@Base 2.0.0 - wkt_yyget_leng@Base 2.0.0 - wkt_yyget_lineno@Base 2.0.0 - wkt_yyget_out@Base 2.0.0 - wkt_yyget_text@Base 2.0.0 - wkt_yyin@Base 2.0.0 - wkt_yyleng@Base 2.0.0 - wkt_yylex@Base 2.0.0 - wkt_yylex_destroy@Base 2.0.0 - wkt_yylineno@Base 2.0.0 - wkt_yylloc@Base 2.0.0 - wkt_yylval@Base 2.0.0 - wkt_yynerrs@Base 2.0.0 - wkt_yyout@Base 2.0.0 - wkt_yyparse@Base 2.0.0 - wkt_yypop_buffer_state@Base 2.0.0 - wkt_yypush_buffer_state@Base 2.0.0 - wkt_yyrealloc@Base 2.0.0 - wkt_yyrestart@Base 2.0.0 - wkt_yyset_debug@Base 2.0.0 - wkt_yyset_in@Base 2.0.0 - wkt_yyset_lineno@Base 2.0.0 - wkt_yyset_out@Base 2.0.0 - wkt_yytext@Base 2.0.0 - x_to_z@Base 2.0.0 - y_to_z@Base 2.0.0 - z_to_latitude@Base 2.0.0 diff -Nru postgis-2.1.1/debian/liblwgeom-2.1.2.install postgis-2.1.2+dfsg/debian/liblwgeom-2.1.2.install --- postgis-2.1.1/debian/liblwgeom-2.1.2.install 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/liblwgeom-2.1.2.install 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/liblwgeom-2.1.2.so diff -Nru postgis-2.1.1/debian/liblwgeom-2.1.2.symbols postgis-2.1.2+dfsg/debian/liblwgeom-2.1.2.symbols --- postgis-2.1.1/debian/liblwgeom-2.1.2.symbols 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/liblwgeom-2.1.2.symbols 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,697 @@ +liblwgeom-2.1.2.so liblwgeom-2.1.2 #MINVER# + GEOS2LWGEOM@Base 2.0.0 + LWGEOM2GEOS@Base 2.0.0 + LWGEOM_GEOS_buildArea@Base 2.0.0 + LWGEOM_GEOS_getPointN@Base 2.0.0 + azimuth_pt_pt@Base 2.0.0 + box2d_clone@Base 2.0.0 + box3d_from_gbox@Base 2.0.0 + box3d_to_gbox@Base 2.0.0 + bytes_from_hexbytes@Base 2.0.0 + cart2geog@Base 2.0.0 + circ_tree_contains_point@Base 2.1.0 + circ_tree_distance_tree@Base 2.1.0 + circ_tree_free@Base 2.1.0 + circ_tree_get_point@Base 2.1.2 + circ_tree_new@Base 2.1.0 + circ_tree_print@Base 2.1.0 + clairaut_cartesian@Base 2.0.0 + clairaut_geographic@Base 2.0.0 + clamp_srid@Base 2.0.0 + closest_point_on_segment@Base 2.0.0 + crosses_dateline@Base 2.0.0 + decode_geohash_bbox@Base 2.1.0 + define_plane@Base 2.0.0 + deparse_hex@Base 2.0.0 + distance2d_pt_pt@Base 2.0.0 + distance2d_pt_seg@Base 2.0.0 + dumb_upper_map@Base 2.0.2 + edge_calculate_gbox@Base 2.0.0 + edge_calculate_gbox_slow@Base 2.0.0 + edge_contains_coplanar_point@Base 2.0.0 + edge_contains_point@Base 2.0.0 + edge_distance_to_edge@Base 2.0.0 + edge_distance_to_point@Base 2.0.0 + edge_intersection@Base 2.0.0 + edge_intersects@Base 2.1.0 + edge_point_in_cone@Base 2.0.0 + edge_point_on_plane@Base 2.0.0 + error_if_srid_mismatch@Base 2.0.0 + gbox_angular_height@Base 2.1.0 + gbox_angular_width@Base 2.1.0 + gbox_centroid@Base 2.1.0 + gbox_clone@Base 2.0.2 + gbox_contains_point3d@Base 2.0.0 + gbox_copy@Base 2.0.0 + gbox_duplicate@Base 2.0.0 + gbox_expand@Base 2.0.0 + gbox_float_round@Base 2.0.0 + gbox_from_string@Base 2.0.0 + gbox_geocentric_slow@Base 2.0.0 + gbox_init@Base 2.0.0 + gbox_init_point3d@Base 2.1.0 + gbox_is_valid@Base 2.1.0 + gbox_merge@Base 2.0.0 + gbox_merge_point3d@Base 2.0.0 + gbox_new@Base 2.0.0 + gbox_overlaps@Base 2.0.0 + gbox_overlaps_2d@Base 2.0.0 + gbox_pt_outside@Base 2.0.0 + gbox_same@Base 2.0.0 + gbox_serialized_size@Base 2.0.0 + gbox_to_string@Base 2.0.0 + gbox_union@Base 2.0.0 + geog2cart@Base 2.0.0 + geographic_point_equals@Base 2.0.0 + geographic_point_init@Base 2.0.0 + geohash_point@Base 2.0.0 + geohash_point_as_int@Base 2.1.0 + geometry_type_from_string@Base 2.0.0 + geomtype_struct_array@Base 2.0.0 + getMachineEndian@Base 2.0.0 + getPoint2d@Base 2.0.0 + getPoint2d_cp@Base 2.1.0 + getPoint2d_p@Base 2.0.0 + getPoint2d_p_ro@Base 2.0.0 + getPoint3dm@Base 2.0.0 + getPoint3dm_p@Base 2.0.0 + getPoint3dz@Base 2.0.0 + getPoint3dz_p@Base 2.0.0 + getPoint4d@Base 2.0.0 + getPoint4d_p@Base 2.0.0 + getPoint_internal@Base 2.0.0 + get_3dcross_product@Base 2.0.0 + get_3dvector_from_points@Base 2.0.0 + gflags@Base 2.0.0 + global_parser_result@Base 2.0.0 + gserialized_copy@Base 2.0.0 + gserialized_from_lwgeom@Base 2.0.0 + gserialized_from_lwgeom_size@Base 2.0.0 + gserialized_get_gbox_p@Base 2.0.0 + gserialized_get_srid@Base 2.0.0 + gserialized_get_type@Base 2.0.0 + gserialized_get_zm@Base 2.0.0 + gserialized_has_bbox@Base 2.0.0 + gserialized_has_m@Base 2.0.0 + gserialized_has_z@Base 2.0.0 + gserialized_is_empty@Base 2.0.0 + gserialized_ndims@Base 2.0.0 + gserialized_read_gbox_p@Base 2.0.0 + gserialized_set_srid@Base 2.0.0 + gserialized_to_string@Base 2.0.0 + hexbytes_from_bytes@Base 2.0.0 + interpolate_point4d@Base 2.0.0 + latitude_degrees_normalize@Base 2.0.0 + latitude_radians_normalize@Base 2.0.0 + ll2cart@Base 2.1.0 + longitude_degrees_normalize@Base 2.0.0 + longitude_radians_normalize@Base 2.0.0 + lw_arc_calculate_gbox_cartesian_2d@Base 2.1.0 + lw_arc_center@Base 2.1.0 + lw_arc_is_pt@Base 2.1.0 + lw_arc_length@Base 2.1.0 + lw_arc_side@Base 2.1.0 + lw_asprintf@Base 2.0.0 + lw_dist2d_arc_arc@Base 2.1.0 + lw_dist2d_check_overlap@Base 2.0.0 + lw_dist2d_circstring_circstring@Base 2.1.0 + lw_dist2d_circstring_curvepoly@Base 2.1.0 + lw_dist2d_circstring_poly@Base 2.1.0 + lw_dist2d_comp@Base 2.0.0 + lw_dist2d_curvepoly_curvepoly@Base 2.1.0 + lw_dist2d_distanceline@Base 2.0.0 + lw_dist2d_distancepoint@Base 2.0.0 + lw_dist2d_distpts_init@Base 2.1.0 + lw_dist2d_distribute_bruteforce@Base 2.0.0 + lw_dist2d_distribute_fast@Base 2.0.0 + lw_dist2d_fast_ptarray_ptarray@Base 2.0.0 + lw_dist2d_line_circstring@Base 2.1.0 + lw_dist2d_line_curvepoly@Base 2.1.0 + lw_dist2d_line_line@Base 2.0.0 + lw_dist2d_line_poly@Base 2.0.0 + lw_dist2d_point_circstring@Base 2.1.0 + lw_dist2d_point_curvepoly@Base 2.1.0 + lw_dist2d_point_line@Base 2.0.0 + lw_dist2d_point_point@Base 2.0.0 + lw_dist2d_point_poly@Base 2.0.0 + lw_dist2d_poly_curvepoly@Base 2.1.0 + lw_dist2d_poly_poly@Base 2.0.0 + lw_dist2d_pre_seg_seg@Base 2.0.0 + lw_dist2d_pt_arc@Base 2.1.0 + lw_dist2d_pt_pt@Base 2.0.0 + lw_dist2d_pt_ptarray@Base 2.0.0 + lw_dist2d_pt_ptarrayarc@Base 2.1.0 + lw_dist2d_pt_seg@Base 2.0.0 + lw_dist2d_ptarray_ptarray@Base 2.0.0 + lw_dist2d_ptarray_ptarrayarc@Base 2.1.0 + lw_dist2d_ptarrayarc_ptarrayarc@Base 2.1.0 + lw_dist2d_recursive@Base 2.0.0 + lw_dist2d_seg_arc@Base 2.1.0 + lw_dist2d_seg_seg@Base 2.0.0 + lw_dist2d_selected_seg_seg@Base 2.0.0 + lw_dist3d_distanceline@Base 2.0.0 + lw_dist3d_distancepoint@Base 2.0.0 + lw_dist3d_distribute_bruteforce@Base 2.0.0 + lw_dist3d_line_line@Base 2.0.0 + lw_dist3d_line_poly@Base 2.0.0 + lw_dist3d_point_line@Base 2.0.0 + lw_dist3d_point_point@Base 2.0.0 + lw_dist3d_point_poly@Base 2.0.0 + lw_dist3d_poly_poly@Base 2.0.0 + lw_dist3d_pt_poly@Base 2.0.0 + lw_dist3d_pt_pt@Base 2.0.0 + lw_dist3d_pt_ptarray@Base 2.0.0 + lw_dist3d_pt_seg@Base 2.0.0 + lw_dist3d_ptarray_poly@Base 2.0.0 + lw_dist3d_ptarray_ptarray@Base 2.0.0 + lw_dist3d_recursive@Base 2.0.0 + lw_dist3d_seg_seg@Base 2.0.0 + lw_get_int32_t@Base 2.0.0 + lw_get_uint32_t@Base 2.0.0 + lw_pt_in_arc@Base 2.1.0 + lw_pt_in_seg@Base 2.1.0 + lw_seg_length@Base 2.1.0 + lw_segment_intersects@Base 2.0.0 + lw_segment_side@Base 2.0.0 + lw_vasprintf@Base 2.0.0 + lwalloc@Base 2.0.0 + lwalloc_var@Base 2.0.0 + lwcircstring_addpoint@Base 2.0.0 + lwcircstring_as_lwgeom@Base 2.0.0 + lwcircstring_clone@Base 2.0.0 + lwcircstring_construct@Base 2.0.0 + lwcircstring_construct_empty@Base 2.0.0 + lwcircstring_free@Base 2.0.0 + lwcircstring_from_lwmpoint@Base 2.0.0 + lwcircstring_from_lwpointarray@Base 2.0.0 + lwcircstring_get_lwpoint@Base 2.1.0 + lwcircstring_is_closed@Base 2.0.0 + lwcircstring_is_empty@Base 2.0.0 + lwcircstring_length@Base 2.0.0 + lwcircstring_length_2d@Base 2.0.0 + lwcircstring_release@Base 2.0.0 + lwcircstring_removepoint@Base 2.0.0 + lwcircstring_reverse@Base 2.0.0 + lwcircstring_same@Base 2.0.0 + lwcircstring_segmentize@Base 2.0.0 + lwcircstring_setPoint4d@Base 2.0.0 + lwcollection_add_lwgeom@Base 2.0.0 + lwcollection_allows_subtype@Base 2.0.0 + lwcollection_as_lwgeom@Base 2.0.0 + lwcollection_clone@Base 2.0.0 + lwcollection_clone_deep@Base 2.0.0 + lwcollection_construct@Base 2.0.0 + lwcollection_construct_empty@Base 2.0.0 + lwcollection_count_vertices@Base 2.0.0 + lwcollection_extract@Base 2.0.0 + lwcollection_force_dims@Base 2.0.0 + lwcollection_free@Base 2.0.0 + lwcollection_getsubgeom@Base 2.0.0 + lwcollection_is_empty@Base 2.0.0 + lwcollection_make_geos_friendly@Base 2.0.0 + lwcollection_ngeoms@Base 2.0.0 + lwcollection_release@Base 2.0.0 + lwcollection_remove_repeated_points@Base 2.0.0 + lwcollection_reserve@Base 2.0.0 + lwcollection_same@Base 2.0.0 + lwcollection_segmentize2d@Base 2.0.0 + lwcollection_segmentize@Base 2.0.0 + lwcollection_simplify@Base 2.0.0 + lwcollection_startpoint@Base 2.1.0 + lwcompound_add_lwgeom@Base 2.0.0 + lwcompound_as_lwgeom@Base 2.0.0 + lwcompound_construct_empty@Base 2.0.0 + lwcompound_contains_point@Base 2.1.0 + lwcompound_is_closed@Base 2.0.0 + lwcompound_length@Base 2.0.0 + lwcompound_length_2d@Base 2.0.0 + lwcompound_segmentize@Base 2.0.0 + lwcurvepoly_add_ring@Base 2.0.0 + lwcurvepoly_area@Base 2.0.0 + lwcurvepoly_as_lwgeom@Base 2.0.0 + lwcurvepoly_construct_empty@Base 2.0.0 + lwcurvepoly_construct_from_lwpoly@Base 2.1.0 + lwcurvepoly_perimeter@Base 2.0.0 + lwcurvepoly_perimeter_2d@Base 2.0.0 + lwcurvepoly_segmentize@Base 2.0.0 + lwerror@Base 2.0.0 + lwerror_var@Base 2.0.0 + lwfree@Base 2.0.0 + lwfree_var@Base 2.0.0 + lwgeom_add_bbox@Base 2.0.0 + lwgeom_add_bbox_deep@Base 2.0.2 + lwgeom_affine@Base 2.0.0 + lwgeom_area@Base 2.0.0 + lwgeom_area_sphere@Base 2.0.0 + lwgeom_area_spheroid@Base 2.0.0 + lwgeom_as_lwcircstring@Base 2.0.0 + lwgeom_as_lwcollection@Base 2.0.0 + lwgeom_as_lwcompound@Base 2.0.0 + lwgeom_as_lwcurvepoly@Base 2.0.0 + lwgeom_as_lwline@Base 2.0.0 + lwgeom_as_lwmline@Base 2.0.0 + lwgeom_as_lwmpoint@Base 2.0.0 + lwgeom_as_lwmpoly@Base 2.0.0 + lwgeom_as_lwpoint@Base 2.0.0 + lwgeom_as_lwpoly@Base 2.0.0 + lwgeom_as_lwpsurface@Base 2.0.0 + lwgeom_as_lwtin@Base 2.0.0 + lwgeom_as_lwtriangle@Base 2.0.0 + lwgeom_as_multi@Base 2.0.0 + lwgeom_azumith_spheroid@Base 2.0.0 + lwgeom_buildarea@Base 2.0.0 + lwgeom_calculate_circ_tree@Base 2.1.0 + lwgeom_calculate_gbox@Base 2.0.0 + lwgeom_calculate_gbox_cartesian@Base 2.0.0 + lwgeom_calculate_gbox_geodetic@Base 2.0.0 + lwgeom_check_geodetic@Base 2.0.0 + lwgeom_clip_to_ordinate_range@Base 2.0.0 + lwgeom_clone@Base 2.0.0 + lwgeom_clone_deep@Base 2.0.0 + lwgeom_construct_empty@Base 2.0.0 + lwgeom_contains_point@Base 2.1.0 + lwgeom_count_rings@Base 2.0.0 + lwgeom_count_vertices@Base 2.0.0 + lwgeom_covers_lwgeom_sphere@Base 2.0.0 + lwgeom_delaunay_triangulation@Base 2.1.0 + lwgeom_desegmentize@Base 2.0.0 + lwgeom_difference@Base 2.0.0 + lwgeom_dimension@Base 2.0.0 + lwgeom_dimensionality@Base 2.0.0 + lwgeom_distance_spheroid@Base 2.0.0 + lwgeom_drop_bbox@Base 2.0.0 + lwgeom_drop_srid@Base 2.0.0 + lwgeom_extent_to_gml2@Base 2.0.0 + lwgeom_extent_to_gml3@Base 2.0.0 + lwgeom_flip_coordinates@Base 2.0.0 + lwgeom_force_2d@Base 2.0.0 + lwgeom_force_3dm@Base 2.0.0 + lwgeom_force_3dz@Base 2.0.0 + lwgeom_force_4d@Base 2.0.0 + lwgeom_force_clockwise@Base 2.0.0 + lwgeom_force_dims@Base 2.0.0 + lwgeom_force_geodetic@Base 2.1.0 + lwgeom_force_sfs@Base 2.1.0 + lwgeom_free@Base 2.0.0 + lwgeom_from_geojson@Base 2.1.0 + lwgeom_from_gserialized@Base 2.0.0 + lwgeom_from_hexwkb@Base 2.0.0 + lwgeom_from_wkb@Base 2.0.0 + lwgeom_from_wkb_state@Base 2.0.0 + lwgeom_from_wkt@Base 2.0.0 + lwgeom_geohash@Base 2.0.0 + lwgeom_geohash_precision@Base 2.0.0 + lwgeom_geos_errmsg@Base 2.0.0 + lwgeom_geos_error@Base 2.0.0 + lwgeom_geos_noop@Base 2.0.0 + lwgeom_geos_version@Base 2.0.0 + lwgeom_get_bbox@Base 2.0.0 + lwgeom_get_srid@Base 2.0.0 + lwgeom_get_type@Base 2.1.0 + lwgeom_has_arc@Base 2.0.0 + lwgeom_has_m@Base 2.0.0 + lwgeom_has_srid@Base 2.0.0 + lwgeom_has_z@Base 2.0.0 + lwgeom_homogenize@Base 2.0.0 + lwgeom_interpolate_point@Base 2.0.0 + lwgeom_intersection@Base 2.0.0 + lwgeom_is_closed@Base 2.0.0 + lwgeom_is_collection@Base 2.0.0 + lwgeom_is_empty@Base 2.0.0 + lwgeom_length@Base 2.0.0 + lwgeom_length_2d@Base 2.0.0 + lwgeom_length_spheroid@Base 2.0.0 + lwgeom_locate_along@Base 2.0.0 + lwgeom_locate_between@Base 2.0.0 + lwgeom_longitude_shift@Base 2.0.0 + lwgeom_make_valid@Base 2.0.0 + lwgeom_maxdistance2d@Base 2.0.0 + lwgeom_maxdistance2d_tolerance@Base 2.0.0 + lwgeom_maxdistance3d@Base 2.0.0 + lwgeom_maxdistance3d_tolerance@Base 2.0.0 + lwgeom_mindistance2d@Base 2.0.0 + lwgeom_mindistance2d_tolerance@Base 2.0.0 + lwgeom_mindistance3d@Base 2.0.0 + lwgeom_mindistance3d_tolerance@Base 2.0.0 + lwgeom_ndims@Base 2.0.0 + lwgeom_needs_bbox@Base 2.0.0 + lwgeom_node@Base 2.0.0 + lwgeom_normalize@Base 2.0.1 + lwgeom_nudge_geodetic@Base 2.0.0 + lwgeom_offsetcurve@Base 2.0.0 + lwgeom_parse_wkt@Base 2.0.0 + lwgeom_parser_result_free@Base 2.0.0 + lwgeom_parser_result_init@Base 2.0.0 + lwgeom_perimeter@Base 2.0.0 + lwgeom_perimeter_2d@Base 2.0.0 + lwgeom_project_spheroid@Base 2.0.0 + lwgeom_release@Base 2.0.0 + lwgeom_remove_repeated_points@Base 2.0.0 + lwgeom_reverse@Base 2.0.0 + lwgeom_same@Base 2.0.0 + lwgeom_segmentize2d@Base 2.0.0 + lwgeom_segmentize@Base 2.0.0 + lwgeom_segmentize_sphere@Base 2.1.0 + lwgeom_set_geodetic@Base 2.0.0 + lwgeom_set_handlers@Base 2.1.0 + lwgeom_set_srid@Base 2.0.0 + lwgeom_sharedpaths@Base 2.0.0 + lwgeom_simplify@Base 2.0.0 + lwgeom_snap@Base 2.0.0 + lwgeom_split@Base 2.0.0 + lwgeom_startpoint@Base 2.1.0 + lwgeom_summary@Base 2.0.0 + lwgeom_symdifference@Base 2.0.0 + lwgeom_to_ewkt@Base 2.0.0 + lwgeom_to_geojson@Base 2.0.0 + lwgeom_to_gml2@Base 2.0.0 + lwgeom_to_gml3@Base 2.0.0 + lwgeom_to_hexwkb@Base 2.0.0 + lwgeom_to_kml2@Base 2.0.0 + lwgeom_to_svg@Base 2.0.0 + lwgeom_to_wkb@Base 2.0.0 + lwgeom_to_wkt@Base 2.0.0 + lwgeom_to_x3d3@Base 2.0.0 + lwgeom_transform@Base 2.0.0 + lwgeom_union@Base 2.0.0 + lwline_add_lwpoint@Base 2.0.0 + lwline_as_lwgeom@Base 2.0.0 + lwline_clip_to_ordinate_range@Base 2.0.0 + lwline_clone@Base 2.0.0 + lwline_clone_deep@Base 2.0.0 + lwline_construct@Base 2.0.0 + lwline_construct_empty@Base 2.0.0 + lwline_count_vertices@Base 2.0.0 + lwline_crossing_direction@Base 2.0.0 + lwline_desegmentize@Base 2.0.0 + lwline_force_dims@Base 2.0.0 + lwline_free@Base 2.0.0 + lwline_from_lwgeom_array@Base 2.0.0 + lwline_from_lwmpoint@Base 2.0.0 + lwline_from_ptarray@Base 2.0.0 + lwline_get_lwpoint@Base 2.0.0 + lwline_is_closed@Base 2.0.0 + lwline_is_empty@Base 2.0.0 + lwline_length@Base 2.0.0 + lwline_length_2d@Base 2.0.0 + lwline_make_geos_friendly@Base 2.0.0 + lwline_measured_from_lwline@Base 2.0.0 + lwline_release@Base 2.0.0 + lwline_remove_repeated_points@Base 2.0.0 + lwline_removepoint@Base 2.0.0 + lwline_reverse@Base 2.0.0 + lwline_same@Base 2.0.0 + lwline_segmentize2d@Base 2.0.0 + lwline_setPoint4d@Base 2.0.0 + lwline_simplify@Base 2.0.0 + lwline_split_by_point_to@Base 2.0.0 + lwmcurve_segmentize@Base 2.0.0 + lwmessage_truncate@Base 2.0.0 + lwmline_add_lwline@Base 2.0.0 + lwmline_as_lwgeom@Base 2.0.0 + lwmline_clip_to_ordinate_range@Base 2.0.0 + lwmline_construct_empty@Base 2.0.0 + lwmline_desegmentize@Base 2.0.0 + lwmline_free@Base 2.0.0 + lwmline_measured_from_lwmline@Base 2.0.0 + lwmline_release@Base 2.0.0 + lwmpoint_add_lwpoint@Base 2.0.0 + lwmpoint_as_lwgeom@Base 2.0.0 + lwmpoint_clip_to_ordinate_range@Base 2.0.0 + lwmpoint_construct@Base 2.0.0 + lwmpoint_construct_empty@Base 2.0.0 + lwmpoint_free@Base 2.0.0 + lwmpoint_release@Base 2.0.0 + lwmpoint_remove_repeated_points@Base 2.0.0 + lwmpoly_add_lwpoly@Base 2.0.0 + lwmpoly_as_lwgeom@Base 2.0.0 + lwmpoly_construct_empty@Base 2.0.0 + lwmpoly_free@Base 2.0.0 + lwmpoly_release@Base 2.0.0 + lwmpolygon_desegmentize@Base 2.0.0 + lwmsurface_segmentize@Base 2.0.0 + lwnotice@Base 2.0.0 + lwnotice_var@Base 2.0.0 + lwpoint_as_lwgeom@Base 2.0.0 + lwpoint_clip_to_ordinate_range@Base 2.0.0 + lwpoint_clone@Base 2.0.0 + lwpoint_construct@Base 2.0.0 + lwpoint_construct_empty@Base 2.0.0 + lwpoint_force_dims@Base 2.0.0 + lwpoint_free@Base 2.0.0 + lwpoint_getPoint2d_p@Base 2.0.0 + lwpoint_getPoint3dm_p@Base 2.0.0 + lwpoint_getPoint3dz_p@Base 2.0.0 + lwpoint_getPoint4d_p@Base 2.0.0 + lwpoint_get_m@Base 2.0.0 + lwpoint_get_ordinate@Base 2.0.0 + lwpoint_get_x@Base 2.0.0 + lwpoint_get_y@Base 2.0.0 + lwpoint_get_z@Base 2.0.0 + lwpoint_inside_circle@Base 2.1.0 + lwpoint_is_empty@Base 2.0.0 + lwpoint_make2d@Base 2.0.0 + lwpoint_make3dm@Base 2.0.0 + lwpoint_make3dz@Base 2.0.0 + lwpoint_make4d@Base 2.0.0 + lwpoint_make@Base 2.0.0 + lwpoint_release@Base 2.0.0 + lwpoint_same@Base 2.0.0 + lwpoint_set_ordinate@Base 2.0.0 + lwpoint_to_latlon@Base 2.0.0 + lwpoly_add_ring@Base 2.0.0 + lwpoly_area@Base 2.0.0 + lwpoly_as_lwgeom@Base 2.0.0 + lwpoly_clone@Base 2.0.0 + lwpoly_clone_deep@Base 2.0.0 + lwpoly_construct@Base 2.0.0 + lwpoly_construct_empty@Base 2.0.0 + lwpoly_count_vertices@Base 2.0.0 + lwpoly_covers_point2d@Base 2.0.0 + lwpoly_force_clockwise@Base 2.0.0 + lwpoly_force_dims@Base 2.0.0 + lwpoly_free@Base 2.0.0 + lwpoly_from_lwlines@Base 2.0.0 + lwpoly_is_closed@Base 2.0.1 + lwpoly_is_empty@Base 2.0.0 + lwpoly_make_geos_friendly@Base 2.0.0 + lwpoly_perimeter@Base 2.0.0 + lwpoly_perimeter_2d@Base 2.0.0 + lwpoly_pt_outside@Base 2.1.2 + lwpoly_release@Base 2.0.0 + lwpoly_remove_repeated_points@Base 2.0.0 + lwpoly_reverse@Base 2.0.0 + lwpoly_same@Base 2.0.0 + lwpoly_segmentize2d@Base 2.0.0 + lwpoly_simplify@Base 2.0.0 + lwpoly_startpoint@Base 2.1.0 + lwpolygon_desegmentize@Base 2.0.0 + lwproj_from_string@Base 2.0.0 + lwpsurface_add_lwpoly@Base 2.0.0 + lwpsurface_as_lwgeom@Base 2.0.0 + lwpsurface_free@Base 2.0.0 + lwpsurface_is_closed@Base 2.0.0 + lwrealloc@Base 2.0.0 + lwrealloc_var@Base 2.0.0 + lwtin_add_lwtriangle@Base 2.0.0 + lwtin_as_lwgeom@Base 2.0.0 + lwtin_free@Base 2.0.0 + lwtin_from_geos@Base 2.1.0 + lwtin_is_closed@Base 2.0.0 + lwtriangle_area@Base 2.0.0 + lwtriangle_as_lwgeom@Base 2.0.0 + lwtriangle_clone@Base 2.0.0 + lwtriangle_construct@Base 2.0.0 + lwtriangle_construct_empty@Base 2.0.0 + lwtriangle_force_clockwise@Base 2.0.0 + lwtriangle_free@Base 2.0.0 + lwtriangle_from_lwline@Base 2.0.0 + lwtriangle_is_empty@Base 2.0.0 + lwtriangle_is_repeated_points@Base 2.0.0 + lwtriangle_perimeter@Base 2.0.0 + lwtriangle_perimeter_2d@Base 2.0.0 + lwtriangle_release@Base 2.0.0 + lwtriangle_reverse@Base 2.0.0 + lwtriangle_same@Base 2.0.0 + lwtype_get_collectiontype@Base 2.0.0 + lwtype_is_collection@Base 2.0.0 + lwtype_name@Base 2.0.0 + next_double_down@Base 2.0.0 + next_double_up@Base 2.0.0 + next_float_down@Base 2.0.0 + next_float_up@Base 2.0.0 + normalize@Base 2.1.0 + p2d_same@Base 2.0.0 + p3d_same@Base 2.1.0 + p4d_same@Base 2.0.0 + parse_hex@Base 2.0.0 + parser_error_messages@Base 2.0.0 + point4d_transform@Base 2.0.0 + point_interpolate@Base 2.0.0 + point_shift@Base 2.0.0 + printBOX3D@Base 2.0.0 + printLWCIRCSTRING@Base 2.0.0 + printLWLINE@Base 2.0.0 + printLWPOINT@Base 2.0.0 + printLWPOLY@Base 2.0.0 + printLWPSURFACE@Base 2.0.0 + printLWTIN@Base 2.0.0 + printLWTRIANGLE@Base 2.0.0 + printPA@Base 2.0.0 + project_point_on_plane@Base 2.0.0 + pt_in_ring_2d@Base 2.0.0 + pt_in_ring_3d@Base 2.0.0 + pta_desegmentize@Base 2.0.0 + ptarray_addPoint@Base 2.0.0 + ptarray_affine@Base 2.0.0 + ptarray_append_point@Base 2.0.0 + ptarray_append_ptarray@Base 2.0.0 + ptarray_arc_length_2d@Base 2.1.1 + ptarray_area_sphere@Base 2.0.0 + ptarray_calculate_gbox_cartesian@Base 2.0.0 + ptarray_calculate_gbox_geodetic@Base 2.0.0 + ptarray_clone@Base 2.0.0 + ptarray_clone_deep@Base 2.0.0 + ptarray_close2d@Base 2.0.0 + ptarray_construct@Base 2.0.0 + ptarray_construct_copy_data@Base 2.0.0 + ptarray_construct_empty@Base 2.0.0 + ptarray_construct_reference_data@Base 2.0.0 + ptarray_contains_point@Base 2.0.2 + ptarray_contains_point_partial@Base 2.1.0 + ptarray_contains_point_sphere@Base 2.1.0 + ptarray_flip_coordinates@Base 2.0.0 + ptarray_force_dims@Base 2.0.0 + ptarray_free@Base 2.0.0 + ptarray_from_GEOSCoordSeq@Base 2.0.0 + ptarray_has_m@Base 2.0.0 + ptarray_has_z@Base 2.0.0 + ptarray_insert_point@Base 2.0.0 + ptarray_is_closed@Base 2.1.0 + ptarray_is_closed_2d@Base 2.1.0 + ptarray_is_closed_3d@Base 2.1.0 + ptarray_is_closed_z@Base 2.1.0 + ptarray_isccw@Base 2.0.0 + ptarray_length@Base 2.0.0 + ptarray_length_2d@Base 2.0.0 + ptarray_length_spheroid@Base 2.0.0 + ptarray_locate_point@Base 2.0.0 + ptarray_longitude_shift@Base 2.0.0 + ptarray_merge@Base 2.0.0 + ptarray_point_size@Base 2.0.0 + ptarray_removePoint@Base 2.0.0 + ptarray_remove_point@Base 2.0.0 + ptarray_remove_repeated_points@Base 2.0.0 + ptarray_reverse@Base 2.0.0 + ptarray_same@Base 2.0.0 + ptarray_segmentize2d@Base 2.0.0 + ptarray_set_point4d@Base 2.0.0 + ptarray_signed_area@Base 2.1.0 + ptarray_simplify@Base 2.0.0 + ptarray_startpoint@Base 2.1.0 + ptarray_substring@Base 2.0.0 + ptarray_to_GEOSCoordSeq@Base 2.0.0 + ptarray_transform@Base 2.0.0 + ptarrayarc_contains_point@Base 2.1.0 + ptarrayarc_contains_point_partial@Base 2.1.0 + rect_node_internal_new@Base 2.0.0 + rect_node_leaf_new@Base 2.0.0 + rect_tree_contains_point@Base 2.0.0 + rect_tree_free@Base 2.0.0 + rect_tree_intersects_tree@Base 2.0.0 + rect_tree_new@Base 2.0.0 + ring_make_geos_friendly@Base 2.0.0 + robust_cross_product@Base 2.0.0 + signum@Base 2.0.0 + sphere_direction@Base 2.1.0 + sphere_distance@Base 2.0.0 + sphere_distance_cartesian@Base 2.0.0 + sphere_project@Base 2.0.0 + spheroid_direction@Base 2.0.0 + spheroid_distance@Base 2.0.0 + spheroid_init@Base 2.0.0 + spheroid_project@Base 2.0.0 + stringbuffer_append@Base 2.0.0 + stringbuffer_aprintf@Base 2.0.0 + stringbuffer_clear@Base 2.0.0 + stringbuffer_copy@Base 2.0.0 + stringbuffer_create@Base 2.0.0 + stringbuffer_create_with_size@Base 2.0.0 + stringbuffer_destroy@Base 2.0.0 + stringbuffer_getlength@Base 2.0.0 + stringbuffer_getstring@Base 2.0.0 + stringbuffer_getstringcopy@Base 2.0.0 + stringbuffer_lastchar@Base 2.0.0 + stringbuffer_set@Base 2.0.0 + stringbuffer_trim_trailing_white@Base 2.0.0 + stringbuffer_trim_trailing_zeroes@Base 2.0.0 + struct_cmp_by_measure@Base 2.0.0 + trim_trailing_zeros@Base 2.0.0 + unit_normal@Base 2.1.0 + vector_angle@Base 2.1.0 + vector_rotate@Base 2.1.0 + vector_sum@Base 2.1.0 + wkt_lexer_close@Base 2.0.0 + wkt_lexer_init@Base 2.0.0 + wkt_lexer_read_srid@Base 2.0.0 + wkt_parser_circularstring_new@Base 2.0.0 + wkt_parser_collection_add_geom@Base 2.0.0 + wkt_parser_collection_finalize@Base 2.0.0 + wkt_parser_collection_new@Base 2.0.0 + wkt_parser_compound_add_geom@Base 2.0.0 + wkt_parser_coord_2@Base 2.0.0 + wkt_parser_coord_3@Base 2.0.0 + wkt_parser_coord_4@Base 2.0.0 + wkt_parser_curvepolygon_add_ring@Base 2.0.0 + wkt_parser_curvepolygon_finalize@Base 2.0.0 + wkt_parser_curvepolygon_new@Base 2.0.0 + wkt_parser_geometry_new@Base 2.0.0 + wkt_parser_linestring_new@Base 2.0.0 + wkt_parser_point_new@Base 2.0.0 + wkt_parser_polygon_add_ring@Base 2.0.0 + wkt_parser_polygon_finalize@Base 2.0.0 + wkt_parser_polygon_new@Base 2.0.0 + wkt_parser_ptarray_add_coord@Base 2.0.0 + wkt_parser_ptarray_new@Base 2.0.0 + wkt_parser_triangle_new@Base 2.0.0 + wkt_yy_create_buffer@Base 2.0.0 + wkt_yy_delete_buffer@Base 2.0.0 + wkt_yy_flex_debug@Base 2.0.0 + wkt_yy_flush_buffer@Base 2.0.0 + wkt_yy_scan_buffer@Base 2.0.0 + wkt_yy_scan_bytes@Base 2.0.0 + wkt_yy_scan_string@Base 2.0.0 + wkt_yy_switch_to_buffer@Base 2.0.0 + wkt_yyalloc@Base 2.0.0 + wkt_yychar@Base 2.0.0 + wkt_yydebug@Base 2.0.0 + wkt_yyerror@Base 2.0.0 + wkt_yyfree@Base 2.0.0 + wkt_yyget_debug@Base 2.0.0 + wkt_yyget_in@Base 2.0.0 + wkt_yyget_leng@Base 2.0.0 + wkt_yyget_lineno@Base 2.0.0 + wkt_yyget_out@Base 2.0.0 + wkt_yyget_text@Base 2.0.0 + wkt_yyin@Base 2.0.0 + wkt_yyleng@Base 2.0.0 + wkt_yylex@Base 2.0.0 + wkt_yylex_destroy@Base 2.0.0 + wkt_yylineno@Base 2.0.0 + wkt_yylloc@Base 2.0.0 + wkt_yylval@Base 2.0.0 + wkt_yynerrs@Base 2.0.0 + wkt_yyout@Base 2.0.0 + wkt_yyparse@Base 2.0.0 + wkt_yypop_buffer_state@Base 2.0.0 + wkt_yypush_buffer_state@Base 2.0.0 + wkt_yyrealloc@Base 2.0.0 + wkt_yyrestart@Base 2.0.0 + wkt_yyset_debug@Base 2.0.0 + wkt_yyset_in@Base 2.0.0 + wkt_yyset_lineno@Base 2.0.0 + wkt_yyset_out@Base 2.0.0 + wkt_yytext@Base 2.0.0 + x_to_z@Base 2.0.0 + y_to_z@Base 2.0.0 + z_to_latitude@Base 2.0.0 diff -Nru postgis-2.1.1/debian/libpostgis-java.poms postgis-2.1.2+dfsg/debian/libpostgis-java.poms --- postgis-2.1.1/debian/libpostgis-java.poms 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/libpostgis-java.poms 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,2 @@ +java/jdbc/pom.xml +java/jdbc/jtssrc/pom.xml diff -Nru postgis-2.1.1/debian/patches/debian-versions postgis-2.1.2+dfsg/debian/patches/debian-versions --- postgis-2.1.1/debian/patches/debian-versions 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/debian-versions 2014-04-05 19:33:47.000000000 +0000 @@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@ #define POSTGIS_GEOS_VERSION 34 #define POSTGIS_PROJ_VERSION 48 - #define POSTGIS_LIB_VERSION '2.1.1' + #define POSTGIS_LIB_VERSION '2.1.2' -#define POSTGIS_LIBXML2_VERSION 2.9.0 +#define POSTGIS_LIBXML2_VERSION 2.9.1 @@ -18,13 +18,13 @@ * Define the build date and the version number --- a/doc/Makefile.comments +++ b/doc/Makefile.comments -@@ -21,8 +21,8 @@ +@@ -21,8 +21,8 @@ MODULEDIR=contrib/$(MODULE_doc) DATA_built=postgis_comments.sql raster_comments.sql topology_comments.sql # PGXS information --PG_CONFIG = /usr/local/pgsql/9.2/bin/pg_config --PGXS := /usr/local/pgsql/9.2/lib/pgxs/src/makefiles/pgxs.mk -+PG_CONFIG = /usr/lib/postgresql/9.3/bin/pg_config +-PG_CONFIG = /opt/pgsql/9.2/bin/pg_config +-PGXS := /opt/pgsql/9.2/lib/pgxs/src/makefiles/pgxs.mk ++PG_CONFIG = /usr/lib/postgresql/9.3/bin/pg_config +PGXS := /usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk include $(PGXS) diff -Nru postgis-2.1.1/debian/patches/de-translation postgis-2.1.2+dfsg/debian/patches/de-translation --- postgis-2.1.1/debian/patches/de-translation 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/de-translation 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,1376 @@ +Description: Add partial German translation for documentation +Author: Chris Leick +Bug-Debian: https://bugs.debian.org/729284 +--- /dev/null ++++ b/doc/po/de_DE/extras_historytable.xml.po +@@ -0,0 +1,304 @@ ++# German po4a translation of extras_historytable.xml. ++# Copyright (C) Refractions Research, Sandro Santilli, Paul Ramsey, ++# Jeff Lounsbury and Chris Hodgson. ++# This file is distributed under the same license as the postgis package. ++# Chris Leick , 2013. ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: postgis 2.1.0-3\n" ++"Report-Msgid-Bugs-To: postgis@packages.debian.org\n" ++"POT-Creation-Date: 2012-09-14 17:50+0000\n" ++"PO-Revision-Date: 2013-11-02 16:16+0100\n" ++"Last-Translator: Chris Leick \n" ++"Language-Team: German \n" ++"Language: de\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++ ++#. Tag: title ++#: extras_historytable.xml:3 ++#, no-c-format ++msgid "History Tracking" ++msgstr "Chronikverfolgung" ++ ++#. Tag: para ++#: extras_historytable.xml:6 ++#, no-c-format ++msgid "Suppose you have a table of data that represents the current state of a particular geographic feature. A parcels table, or a roads table, or a fruit trees table, whatever. Generally, GIS tools understand a table as a single entity into which they can update, insert and delete rows from. How you do allow common GIS tools to work against your data, while maintaining an audit trail of what changes have been made, by whom, and what the past state of the data is?" ++msgstr "" ++"Angenommen, Sie haben eine Datentabelle, die den aktuellen Status einer " ++"bestimmten geografischen Funktionalität darstellt, etwa eine Pakettabelle, " ++"eine Straßentabelle, eine Obstbaumtabelle oder was auch immer. Im Allgemeinen " ++"betrachten GIS-Werkzeuge eine Tabelle als eine einzelne Einheit, in der sie " ++"Zeilen aktualisieren, einfügen oder löschen können. Wie ermöglichen Sie " ++"üblichen GIS-Werkzeugen mit Ihren Daten zu arbeiten, wenn eine Kontrolle " ++"durchgeführt wird, welche Änderungen gemacht wurden, durch wen und was der " ++"frühere Status der Daten ist?" ++ ++#. Tag: para ++#: extras_historytable.xml:10 ++#, no-c-format ++msgid "This history_table extra module provides some utility functions for creating and maintaining history." ++msgstr "" ++"Dieses Zusatzmodul history_table stellt einige " ++"Hilfswerkzeuge zum Erstellen und Verwalten der Chronik bereit." ++ ++#. Tag: para ++#: extras_historytable.xml:14 ++#, no-c-format ++# de.wikipedia.org/wiki/PL/pgSQL ++msgid "The history_table was also packaged in PostGIS 1.5, but added to the documentation in PostGIS 2.0. This package is written in plpgsql and located in the extras/history_table of PostGIS source tar balls and source repository." ++msgstr "" ++"Die history_table wurde auch in PostGIS 1.5 paketiert, " ++"dieser Dokumentation aber erst in PostGIS 2.0 hinzugefügt. Dieses Paket wurde " ++"in PL/pgSQL geschrieben und befindet sich in " ++"extras/history_table der PostGIS-Quell-Tarballs und dem " ++"Quelldepot." ++ ++#. Tag: para ++#: extras_historytable.xml:15 ++#, no-c-format ++msgid "If you have a table 'roads', this module will maintain a 'roads_history' side table, which contains all the columns of the parent table, and the following additional columns:" ++msgstr "" ++"Falls Sie eine Tabelle »roads« haben, wird dieses Modul eine Nebentabelle " ++"»roads_history« verwalten, die alle Spalten der übergeordneten Tabelle " ++"sowie die folgenden zusätzlichen Spalten enthält:" ++ ++#. Tag: programlisting ++#: extras_historytable.xml:16 ++#, no-c-format ++msgid "" ++ "history_id | integer | not null default \n" ++ " date_added | timestamp without time zone | not null default now()\n" ++ " date_deleted | timestamp without time zone | \n" ++ " last_operation | character varying(30) | not null\n" ++ " active_user | character varying(90) | not null default \"current_user\"()\n" ++ " current_version | text | not null" ++msgstr "" ++ "history_id | integer | not null default \n" ++ " date_added | timestamp without time zone | not null default now()\n" ++ " date_deleted | timestamp without time zone | \n" ++ " last_operation | character varying(30) | not null\n" ++ " active_user | character varying(90) | not null default \"current_user\"()\n" ++ " current_version | text | not null" ++ ++#. Tag: para ++#: extras_historytable.xml:20 ++#, no-c-format ++# FIXME s/in the/and the/ ++msgid "When you insert a new record into 'roads' a record is automatically inserted into 'roads_history', with the 'date_added' filled in the 'date_deleted' set to NULL, a unique 'history_id', a 'last_operation' of 'INSERT' and 'active_user' set." ++msgstr "" ++"Wenn Sie einen neuen Datensatz in »roads« einfügen, wird automatisch ein " ++"neuer Datensatz in »roads_history« eingefügt, bei dem »date_added« " ++"ausgefüllt und »date_deleted« auf NULL gesetzt wird. Er hat eine eindeutige " ++"»history_id«, eine »last_operation« von »INSERT« und einen gesetzten " ++"»active_user«." ++ ++#. Tag: para ++#: extras_historytable.xml:23 ++#, no-c-format ++msgid "When you delete a record in 'roads', the record in the history table is *not* deleted, but the 'date_deleted' is set to the current date." ++msgstr "" ++"Wenn Sie einen Datensatz aus »roads« löschen, wird der Datensatz *nicht* " ++"aus »roads_history« gelöscht, das »date_deleted« jedoch auf das aktuelle " ++"Datum gesetzt." ++ ++#. Tag: para ++#: extras_historytable.xml:26 ++#, no-c-format ++msgid "When you update a record in 'roads', the current record has 'date_deleted' filled in and a new record is created with the 'date_added' set and 'date_deleted' NULL." ++msgstr "" ++"Wenn Sie einen Datensatz in »roads« aktualisieren, wird beim aktuellen " ++"Datensatz »date_deleted« ausgefüllt und es wird ein neuer Datensatz mit " ++"gesetztem »date_added« erstellt, dessen »date_deleted« NULL ist." ++ ++#. Tag: para ++#: extras_historytable.xml:30 ++#, no-c-format ++msgid "With this information maintained, it is possible to retrieve the history of any record in the roads table:" ++msgstr "" ++"Mit der Verwaltung dieser Informationen ist es möglich, die Chronik aller " ++"Datensätze in der Tabelle »roads« abzufragen:" ++ ++#. Tag: programlisting ++#: extras_historytable.xml:31 ++#, no-c-format ++msgid "SELECT * FROM roads_history WHERE roads_pk = 111;" ++msgstr "SELECT * FROM roads_history WHERE roads_pk = 111;" ++ ++#. Tag: para ++#: extras_historytable.xml:33 ++#, no-c-format ++msgid "Or, to retrieve a view of the roads table at any point in the past:" ++msgstr "" ++"Oder, um eine Ansicht der Tabelle »roads« für einen beliebigen Zeitpunkt in " ++"der Vergangenheit zu erhalten:" ++ ++#. Tag: programlisting ++#: extras_historytable.xml:34 ++#, no-c-format ++msgid "" ++ "SELECT * FROM roads_history \n" ++ " WHERE date_added < 'January 1, 2001' AND \n" ++ " ( date_deleted >= 'January 1, 2001' OR date_deleted IS NULL );" ++msgstr "" ++ "SELECT * FROM roads_history \n" ++ " WHERE date_added < '1. Januar 2001' AND \n" ++ " ( date_deleted >= '1. Januar 2001' OR date_deleted IS NULL );" ++ ++#. Tag: refname ++#: extras_historytable.xml:38 ++#, no-c-format ++msgid "Postgis_Install_History" ++msgstr "Postgis_Install_History" ++ ++#. Tag: refpurpose ++#: extras_historytable.xml:39 ++#, no-c-format ++msgid "Creates a table that will hold some interesting values for managing history tables." ++msgstr "" ++"erstellt eine Tabelle, die einige interessante Werte zum Verwalten von " ++"Chroniktabellen bereithalten wird." ++ ++#. Tag: funcprototype ++#: extras_historytable.xml:44 ++#, no-c-format ++msgid "void Postgis_Install_History " ++msgstr "" ++"void Postgis_Install_History " ++"" ++ ++#. Tag: title ++#: extras_historytable.xml:52 extras_historytable.xml:92 ++#, no-c-format ++msgid "Description" ++msgstr "Beschreibung" ++ ++#. Tag: para ++#: extras_historytable.xml:54 ++#, no-c-format ++msgid "Creates a table that will hold some interesting values for managing history tables. Creates a table called historic_information" ++msgstr "" ++"erstellt eine Tabelle, die einige interessante Werte zum Verwalten von " ++"Chroniktabellen bereithalten wird. Es wird eine Tabelle namens " ++"historic_information erstellt." ++ ++#. Tag: para ++#: extras_historytable.xml:58 extras_historytable.xml:100 ++#, no-c-format ++msgid "Availability: 1.5.0" ++msgstr "Verfügbarkeit: 1.5.0" ++ ++#. Tag: title ++#: extras_historytable.xml:63 extras_historytable.xml:105 ++#, no-c-format ++msgid "Examples" ++msgstr "Beispiele" ++ ++#. Tag: programlisting ++#: extras_historytable.xml:65 ++#, no-c-format ++msgid "SELECT postgis_install_history();" ++msgstr "SELECT postgis_install_history();" ++ ++#. Tag: title ++#: extras_historytable.xml:71 extras_historytable.xml:113 ++#, no-c-format ++msgid "See Also" ++msgstr "Siehe auch" ++ ++#. Tag: refname ++#: extras_historytable.xml:77 ++#, no-c-format ++msgid "Postgis_Enable_History" ++msgstr "Postgis_Enable_History" ++ ++#. Tag: refpurpose ++#: extras_historytable.xml:78 ++#, no-c-format ++# FIXME s/tablein/table in/ ++# FIXME s/in side/inside/ ++msgid "Registers a tablein the history_information table for tracking and also adds in side line history table and insert, update, delete rules on the table." ++msgstr "" ++"registriert eine Tabelle zur Verfolgung in der Tabelle »history_information« " ++"und fügt außerdem innerhalb eine Zeilenchroniktabelle sowie Regeln zum " ++"Einfügen, Löschen und Aktualisieren in der Tabelle ein." ++ ++#. Tag: funcprototype ++#: extras_historytable.xml:83 ++#, no-c-format ++msgid "boolean Postgis_Enable_History text p_schema text p_table" ++msgstr "" ++"boolean Postgis_Enable_History " ++"text p_schema " ++"text p_table" ++ ++#. Tag: para ++#: extras_historytable.xml:94 ++#, no-c-format ++msgid "Registers a table in the history_information table for tracking and also adds in side line history table with same name as table but prefixed with history in the same schema as the original table. Puts in insert, update, delete rules on the table. Any inserts,updates,deletes of the geometry are recorded in the history table." ++msgstr "" ++"registriert eine Tabelle zur Verfolgung in der Tabelle »history_information« " ++"und fügt außerdem innerhalb eine Zeilenchroniktabelle ein. Sie hat denselben " ++"Tabellennamen, dem jedoch ein history vorangestellt wird " ++"und dasselbe Schema wie die Originaltabelle. Darin werden Regeln zum " ++"Einfügen, Löschen und Aktualisieren in der Tabelle abgelegt. Jegliches " ++"Einfügen, Aktualisieren und Löschen wird in der Chroniktabelle aufgezeichnet." ++ ++#. Tag: para ++#: extras_historytable.xml:97 ++#, no-c-format ++msgid "This function currently relies on a geometry column being registered in geometry_columns and fails if the geometry column is not present in geometry_columns table." ++msgstr "" ++"Diese Funktion beruht derzeit darauf, dass eine Geometriespalte in " ++"geometry_columns registriert wurde. Sie scheitert, falls " ++"die Geometriespalte nicht in der Tabelle geometry_columns " ++"vorhanden ist." ++ ++#. Tag: programlisting ++#: extras_historytable.xml:107 ++#, no-c-format ++msgid "" ++ "CREATE TABLE roads(gid SERIAL PRIMARY KEY, road_name varchar(150));\n" ++ "SELECT AddGeometryColumn('roads', 'geom', 26986, 'LINESTRING', 2);\n" ++ " \n" ++ "SELECT postgis_enable_history('public', 'roads', 'geom') As register_table;\n" ++ "register_table\n" ++ "--------------\n" ++ "t\n" ++ "\n" ++ "INSERT INTO roads(road_name, geom) \n" ++ " VALUES('Test Street', ST_GeomFromText('LINESTRING(231660.5 832170,231647 832202,231627.5 832250.5)',26986));\n" ++ "\n" ++ "-- check transaction detail --\n" ++ "SELECT date_added, last_operation, current_version \n" ++ "FROM roads_history \n" ++ "WHERE road_name = 'Test Street' ORDER BY date_added DESC;\n" ++ "\n" ++ " date_added | last_operation | current_version\n" ++ "------------------------+----------------+-----------------\n" ++ " 2011-02-07 12:44:36.92 | INSERT | 2" ++msgstr "" ++ "CREATE TABLE roads(gid SERIAL PRIMARY KEY, road_name varchar(150));\n" ++ "SELECT AddGeometryColumn('roads', 'geom', 26986, 'LINESTRING', 2);\n" ++ " \n" ++ "SELECT postgis_enable_history('public', 'roads', 'geom') As register_table;\n" ++ "register_table\n" ++ "--------------\n" ++ "t\n" ++ "\n" ++ "INSERT INTO roads(road_name, geom) \n" ++ " VALUES('Test Street', ST_GeomFromText('LINESTRING(231660.5 832170,231647 832202,231627.5 832250.5)',26986));\n" ++ "\n" ++ "-- check transaction detail --\n" ++ "SELECT date_added, last_operation, current_version \n" ++ "FROM roads_history \n" ++ "WHERE road_name = 'Test Street' ORDER BY date_added DESC;\n" ++ "\n" ++ " date_added | last_operation | current_version\n" ++ "------------------------+----------------+-----------------\n" ++ " 2011-02-07 12:44:36.92 | INSERT | 2" ++ +--- /dev/null ++++ b/doc/po/de_DE/faq.xml.po +@@ -0,0 +1,1063 @@ ++# German po4a translation of faq.xml. ++# Copyright (C) Refractions Research, Sandro Santilli, Paul Ramsey, ++# Jeff Lounsbury and Chris Hodgson. ++# This file is distributed under the same license as the postgis package. ++# Chris Leick , 2013. ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: postgis 2.1.0-3\n" ++"Report-Msgid-Bugs-To: postgis@packages.debian.org\n" ++"POT-Creation-Date: 2013-10-21 15:08+0000\n" ++"PO-Revision-Date: 2013-11-19 12:13+0100\n" ++"Last-Translator: Chris Leick \n" ++"Language-Team: German \n" ++"Language: de\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Plural-Forms: nplurals=2; plural=(n != 1);\n" ++ ++#. Tag: title ++#: faq.xml:3 ++#, no-c-format ++msgid "PostGIS Frequently Asked Questions" ++msgstr "Häufige Fragen zu PostGIS" ++ ++#. Tag: para ++#: faq.xml:8 ++#, no-c-format ++msgid "" ++"Where can I find tutorials, guides and workshops on working with PostGIS" ++msgstr "" ++"Wo kann ich Lernprogramme, Anleitungen und Seminare für die Arbeit mit " ++"PostGIS finden?" ++ ++#. Tag: para ++#: faq.xml:12 ++#, no-c-format ++msgid "" ++"OpenGeo has a step by step tutorial guide workshop Introduction to PostGIS<" ++"/ulink>. It includes packaged data as well as intro to working with OpenGeo " ++"Suite. It is probably the best tutorial on PostGIS." ++msgstr "" ++"OpenGeo hat ein schrittweises Lernprogramm Introduction to " ++"PostGIS. Es beinhaltet sowohl paketierte Daten als auch ein " ++"Einführung in das Arbeiten mit der OpenGeo-Suite. Es ist wahrscheinlich das " ++"beste Lernprogramm für PostGIS." ++ ++#. Tag: para ++#: faq.xml:13 ++#, no-c-format ++msgid "" ++"BostonGIS also has a PostGIS almost idiot's guide on getting " ++"started. That one is more focused on the windows user." ++msgstr "" ++"Außerdem hat BostonGIS ein PostGIS almost idiot's guide on getting " ++"started. Dieser ist eher für Windows-Benutzer gedacht." ++ ++#. Tag: para ++#: faq.xml:18 ++#, no-c-format ++msgid "" ++"My applications and desktop tools worked with PostGIS 1.5,but they don't work " ++"with PostGIS 2.0. How do I fix this?" ++msgstr "" ++"Meine Anwendungen und Arbeitsflächenwerkzeuge funktionierten mit PostGIS 1.5, " ++"nicht jedoch mit PostGIS 2.0. Wie kann ich dies beheben?" ++ ++#. Tag: para ++#: faq.xml:22 ++#, no-c-format ++msgid "" ++"A lot of deprecated functions were removed from the PostGIS code base in " ++"PostGIS 2.0. This has affected applications in addition to third-party tools " ++"such as Geoserver, MapServer, QuantumGIS, and OpenJump to name a few. There " ++"are a couple of ways to resolve this. For the third-party apps, you can try " ++"to upgrade to the latest versions of these which have many of these issues " ++"fixed. For your own code, you can change your code to not use the functions " ++"removed. Most of these functions are non ST_ aliases of ST_Union, ST_Length " ++"etc. and as a last resort, install the whole of legacy.sql " ++"or just the portions of legacy.sql you need." ++msgstr "" ++"Viele missbilligte Funktionen wurden aus der Codebasis von PostGIS 2.0 " ++"entfernt. Dies betraf Anwendungen sowie Werkzeuge von Drittanbietern wie " ++"Geoserver, MapServer, QuantumGIS und OpenJump, um einige zu nennen. Es gibt " ++"ein paar Wege, dies zu beheben. Für die Anwendungen von Drittanbietern können " ++"Sie versuchen, sie auf die neuste Version zu aktualisieren, bei der viele " ++"dieser Probleme behoben wurden. Ihren eigenen Code könne Sie so ändern, dass " ++"er die entfernten Funktionen nicht mehr benutzt. Die meisten dieser " ++"Funktionen sind Nicht-ST-Alias von ST_Union, ST_Length etc. und als letzten " ++"Ausweg können Sie die gesamte legacy.sql oder nur " ++"die Teile davon, die Sie benötigen, installieren." ++ ++#. Tag: para ++#: faq.xml:28 ++#, no-c-format ++msgid "" ++"The legacy.sql file is located in the same folder as " ++"postgis.sql. You can install this file after you have installed postgis.sql " ++"and spatial_ref_sys.sql to get back all the 200 some-odd old functions we " ++"removed." ++msgstr "" ++"Die Datei legacy.sql liegt im selben Verzeichnis wie " ++"»postgis.sql«. Sie können diese Datei nach der Installation von »postgis.sql« " ++"und »spatial_ref_sys.sql« installieren, um alle etwa 200 alten Funktionen " ++"zurückzubekommen, die entfernt wurden." ++ ++#. Tag: para ++#: faq.xml:35 ++#, no-c-format ++msgid "" ++"When I load OpenStreetMap data with osm2pgsql, I'm getting an error failed: " ++"ERROR: operator class \"gist_geometry_ops\" does not exist for access method " ++"\"gist\" Error occurred. This worked fine in PostGIS 1.5." ++msgstr "" ++"Wenn ich OpenStreetMap-Daten mit »osm2pgsql« lade, bekomme ich eine " ++"Fehlermeldung: »operator class \"gist_geometry_ops\" does not exist for " ++"access method \"gist\" Error occurred.« In PostGIS 1.5 klappte das gut." ++ ++#. Tag: para ++#: faq.xml:40 ++#, no-c-format ++msgid "" ++"In PostGIS 2, the default geometry operator class gist_geometry_ops was " ++"changed to gist_geometry_ops_2d and the gist_geometry_ops was completely " ++"removed. This was done because PostGIS 2 also introduced Nd spatial indexes " ++"for 3D support and the old name was deemed confusing and a misnomer." ++msgstr "" ++"In PostGIS 2 wurde die Standardgeometrieoperatorklasse »gist_geometry_ops« " ++"in »gist_geometry_ops_2d« geändert und »gist_geometry_ops« wurde vollständig " ++"entfernt. Grund ist, dass PostGIS auch räumliche Nd-Indizes für " ++"3D-Unterstützung einführt und der alte Name als verwirrend und fehlerhaft " ++"angesehen wurde." ++ ++#. Tag: para ++#: faq.xml:41 ++#, no-c-format ++msgid "" ++"Some older applications that as part of the process create tables and " ++"indexes, explicitly referenced the operator class name. This was unnecessary " ++"if you want the default 2D index. So if you manage said good, change index " ++"creation from:" ++msgstr "" ++"Einige ältere Anwendungen, die als Teil des Prozesses Tabellen und Indizes " ++"erstellen, referenzieren explizit den Operatorklassennamen. Dies war unnötig, " ++"falls Sie den Standard-2D-Index wollten. Falls Sie dies also gut hinbekommen " ++"möchten, ändern Sie die Indexerstellung von:" ++ ++#. Tag: para ++#: faq.xml:42 ++#, no-c-format ++msgid "BAD:" ++msgstr "SCHLECHT:" ++ ++#. Tag: programlisting ++#: faq.xml:43 ++#, no-c-format ++msgid "" ++"CREATE INDEX idx_my_table_geom ON my_table USING gist(geom gist_geometry_ops);" ++msgstr "" ++"CREATE INDEX idx_my_table_geom ON my_table USING gist(geom gist_geometry_ops);" ++ ++#. Tag: para ++#: faq.xml:44 ++#, no-c-format ++msgid "To GOOD:" ++msgstr "in GUT:" ++ ++#. Tag: programlisting ++#: faq.xml:45 ++#, no-c-format ++msgid "CREATE INDEX idx_my_table_geom ON my_table USING gist(geom);" ++msgstr "CREATE INDEX idx_my_table_geom ON my_table USING gist(geom);" ++ ++#. Tag: para ++#: faq.xml:47 ++#, no-c-format ++msgid "" ++"The only case where you WILL need to specify the operator class is if you " ++"want a 3D spatial index as follows:" ++msgstr "" ++"Der einzige Fall, in dem Sie die Operatorklasse angeben MÜSSEN, ist, wenn " ++"Sie einen räumlichen 3D-Index wie folgt möchten:" ++ ++#. Tag: programlisting ++#: faq.xml:48 ++#, no-c-format ++msgid "" ++"CREATE INDEX idx_my_super3d_geom ON my_super3d USING gist(geom " ++"gist_geometry_ops_nd);" ++msgstr "" ++"CREATE INDEX idx_my_super3d_geom ON my_super3d USING gist(geom " ++"gist_geometry_ops_nd);" ++ ++#. Tag: para ++#: faq.xml:50 ++#, no-c-format ++msgid "" ++"If you are unfortunate to be stuck with compiled code you can't change that " ++"has the old gist_geometry_ops hard-coded, then you can create the old class " ++"using the legacy_gist.sql packaged in PostGIS 2.0.2+. " ++"However if you use this fix, you are advised to at a later point drop the " ++"index and recreate it without the operator class. This will save you grief in " ++"the future when you need to upgrade again." ++msgstr "" ++"Falls Sie unglücklicherweise kompilierten Code, den Sie nicht mehr ändern " ++"können, am Hals haben und bei dem , bei dem altes »gist_geometry_ops« hart " ++"codiert ist, können Sie die alte Klasse mittels des in PostGIS 2.0.2+ " ++"paketierten legacy_gist.sql erstellen. Falls Sie jedoch " ++"diese Fehlerbehebung verwenden, wird Ihnen dringend empfohlen, zu einem " ++"späteren Zeitpunkt den Index zu löschen und ihn ohne die Operatorklasse neu " ++"zu erstellen. Dies wird Ihnen in der Zukunft, wenn Sie erneut ein Upgrade " ++"durchführen, Kummer ersparen." ++ ++#. Tag: para ++#: faq.xml:56 ++#, no-c-format ++msgid "" ++"I'm running PostgreSQL 9.0 and I can no longer read/view geometries in " ++"OpenJump, Safe FME, and some other tools?" ++msgstr "" ++"Ich führe PostgreSQL 9.0 aus und kann Geometrien nicht länger in OpenJump, " ++"Safe FME und einigen anderen Werkzeugen lesen/schreiben." ++ ++#. Tag: para ++#: faq.xml:60 ++#, no-c-format ++msgid "" ++"In PostgreSQL 9.0+, the default encoding for bytea data has been changed to " ++"hex and older JDBC drivers still assume escape format. This has affected some " ++"applications such as Java applications using older JDBC drivers or .NET " ++"applications that use the older npgsql driver that expect the old behavior of " ++"ST_AsBinary. There are two approaches to getting this to work again." ++msgstr "" ++"In PostgreSQL 9.0+ wurde die Standardcodierung für »bytea«-Daten in " ++"hexadezimal geändert und ältere JDBC-Treiber gehen immer noch vom " ++"Escape-Format aus. Dies beeinflusste einige Anwendungen wie Java-Programme, " ++"die ältere JDBC-Treiber benutzen oder .NET-Anwendungen, die ältere " ++"»npgsql«-Treiber verwenden, die das frühere Verhalten von ST_AsBinary " ++"erwarten. Es gibt zwei Herangehensweisen, dies wieder zum Laufen zu bringen." ++ ++#. Tag: para ++#: faq.xml:64 ++#, no-c-format ++msgid "" ++"You can upgrade your JDBC driver to the latest PostgreSQL 9.0 version which " ++"you can get from " ++"http://jdbc.postgresql.org/download.html" ++msgstr "" ++"Sie können Ihren JDBC-Treiber auf die neuste PostgreSQL-9.0-Version " ++"aktualisieren. Diese erhalten Sie unter " ++"http://jdbc.postgresql.org/download.html." ++ ++#. Tag: para ++#: faq.xml:66 ++#, no-c-format ++msgid "" ++"If you are running a .NET app, you can use Npgsql 2.0.11 or higher which you " ++"can download from " ++"http://pgfoundry.org/frs/?group_id=1000140 and as described on Francisco " ++"Figueiredo's NpgSQL 2.0.11 released blog entry" ++msgstr "" ++"Falls Sie eine .NET-Anwendung ausführen, können Sie Npgsql 2.0.11 oder neuer " ++"verwenden. Dies können Sie von http://pgfoundry.org/frs/?group_id=1000140, wie im " ++"Blog-Eintrag von Francisco Figueiredo zur Veröffentlichung von NpgSQL 2.0.11<" ++"/ulink> beschrieben, herunterladen." ++ ++#. Tag: para ++#: faq.xml:70 ++#, no-c-format ++msgid "" ++"If upgrading your PostgreSQL driver is not an option, then you can set the " ++"default back to the old behavior with the following change:" ++msgstr "" ++"Falls das Aktualisieren Ihres PostgreSQL-Treibers nicht in Frage kommt, " ++"können Sie die Voreinstellung mit der folgenden Änderung auf das vorherige " ++"Verhalten zurücksetzen:" ++ ++#. Tag: programlisting ++#: faq.xml:71 ++#, no-c-format ++msgid "ALTER DATABASE mypostgisdb SET bytea_output='escape';" ++msgstr "ALTER DATABASE mypostgisdb SET bytea_output='escape';" ++ ++#. Tag: para ++#: faq.xml:78 ++#, no-c-format ++msgid "" ++"I tried to use PgAdmin to view my geometry column and it is blank, what gives?" ++msgstr "" ++"Ich habe versucht, meine Geometriespalte mit PgAdmin anzusehen, aber sie ist " ++"leer. Was ist los?" ++ ++#. Tag: para ++#: faq.xml:82 ++#, no-c-format ++msgid "" ++"PgAdmin doesn't show anything for large geometries. The best ways to verify " ++"you do have data in your geometry columns are?" ++msgstr "" ++"PgAdmin zeigt bei großen Geometrien nichts an. Was ist der beste Weg, um zu " ++"prüfen, ob sich in Ihren Geometriespalten Daten befinden?" ++ ++#. Tag: programlisting ++#: faq.xml:85 ++#, no-c-format ++msgid "" ++"-- this should return no records if all your geom fields are filled in " ++"\n" ++"SELECT somefield FROM mytable WHERE geom IS NULL;" ++msgstr "" ++"-- Falls alle Geometriefelder gefüllt sind, sollte dies keine Datensätze " ++"zurückgeben " ++"\n" ++"SELECT ein_feld FROM meine_tabelle WHERE geom IS NULL;" ++ ++#. Tag: programlisting ++#: faq.xml:87 ++#, no-c-format ++msgid "" ++"-- To tell just how large your geometry is do a query of the form\n" ++"--which will tell you the most number of points you have in any of your " ++"geometry columns\n" ++"SELECT MAX(ST_NPoints(geom)) FROM sometable;" ++msgstr "" ++"-- Um nur mitzuteilen, wie groß Ihre Geometrie ist, führen Sie eine Abfrage " ++"in der folgenden Form aus.\n" ++"-- Sie wird Ihnen die Höchstzahl von Punkten mitteilen, die Sie in Ihren " ++"Geometriespalten haben.\n" ++"SELECT MAX(ST_NPoints(geom)) FROM sometable;" ++ ++#. Tag: para ++#: faq.xml:93 ++#, no-c-format ++msgid "What kind of geometric objects can I store?" ++msgstr "Welche Art geometrischer Objekte kann ich speichern?" ++ ++#. Tag: para ++#: faq.xml:97 ++#, no-c-format ++msgid "" ++"You can store point, line, polygon, multipoint, multiline, multipolygon, and " ++"geometrycollections. In PostGIS 2.0 and above you can also store TINS and " ++"Polyhedral Surfaces in the basic geometry type. These are specified in the " ++"Open GIS Well Known Text Format (with XYZ,XYM,XYZM extensions). There are " ++"three data types currently supported. The standard OGC geometry data type " ++"which uses a planar coordinate system for measurement, the geography data " ++"type which uses a geodetic coordinate system (not OGC, but you'll find a " ++"similar type in Microsoft SQL Server 2008+). Only WGS 84 long lat (SRID:4326) " ++"is supported by the geography data type. The newest family member of the " ++"PostGIS spatial type family is raster for storing and analyzing raster data. " ++"Raster has its very own FAQ. Refer to and for more details." ++msgstr "" ++"Sie können Punkte, Linien, Polygone, Objekte aus mehreren Punkten, Linien und " ++"Polygonen, sowie Geometriesammlungen speichern. In PostGIS 2.0 und höher " ++"können Sie auch TINs und Polyederoberflächen im Basistyp »geometry« " ++"speichern. Diese werden im »Well-known Text«-Open-GIS-Textformat (mit XYZ-, " ++"XYM- und XYZM-Erweiterungen) angegeben. Derzeit werden drei Datentypen " ++"unterstützt: Der Standard-OGC-Datentyp »geometry«, der für die Messung ein " ++"flaches Koordinatensystem verwendet, der Datentyp »geography«, der ein " ++"geodätisches Koordinatensystem benutzt (nicht OGC, aber Sie finden einen " ++"ähnlichen Typ in Microsoft SQL Server 2008+). Nur WGS 84 long lat (SRID:4326) " ++"wird vom Datentyp »geography« unterstützt. Das neuste Familienmitglied der " ++"räumlichen PostGIS-Typenfamilie ist »raster« zum Speichern und Analysieren " ++"von Rasterdaten. »raster« hat seine eigene FAQ. Weitere Einzelheiten finden " ++"Sie unter und ." ++ ++#. Tag: para ++#: faq.xml:110 ++#, no-c-format ++msgid "I'm all confused. Which data store should I use geometry or geography?" ++msgstr "" ++"Ich bin ganz verwirrt. Welchen Datenspeicher soll ich verwenden, »geometry« " ++"oder »geography«?" ++ ++#. Tag: para ++#: faq.xml:114 ++#, no-c-format ++msgid "" ++"Short Answer: geography is a new data type that supports long range distances " ++"measurements, but most computations on it are currently slower than they are " ++"on geometry. If you use geography -- you don't need to learn much about " ++"planar coordinate systems. Geography is generally best if all you care about " ++"is measuring distances and lengths and you have data from all over the world. " ++"Geometry data type is an older data type that has many more functions " ++"supporting it, enjoys greater support from third party tools, and operations " ++"on it are generally faster -- sometimes as much as 10 fold faster for larger " ++"geometries. Geometry is best if you are pretty comfortable with spatial " ++"reference systems or you are dealing with localized data where all your data " ++"fits in a single spatial reference system " ++"(SRID), or you need to do a lot of spatial processing. Note: It is " ++"fairly easy to do one-off conversions between the two types to gain the " ++"benefits of each. Refer to to " ++"see what is currently supported and what is not." ++msgstr "" ++"Kurze Antwort: »geography« ist ein neuer Datentyp, der große Bereiche von " ++"Distanzvermessungen unterstützt, die meisten Berechnungen damit sind derzeit " ++"langsamer als bei »geometry«. Falls Sie »geography« benutzen, müssen Sie " ++"nicht viel über flache Koordinatensysteme lernen. »geography« ist im " ++"Allgemeinen am besten, falls alles, was Sie interessiert, das Vermessen von " ++"Entfernungen und Längen ist und Sie Daten von überall in der Welt haben. Der " ++"Datentyp »geometry« ist ein alter Datentyp, den viel mehr Funktionen " ++"unterstützen, der eine größere Unterstützung von Werkzeugen Dritter genießt " ++"und mit dem Transaktionen generell schneller sind, manchmal um bis zum " ++"Zehnfachen schneller für große Geometrien. »geometry« ist die beste Wahl, " ++"wenn Sie sich in räumlichen Bezugssystemen sicher fühlen oder Sie mit " ++"lokalisierten Daten umgehen, bei denen alle Ihre Daten in ein einziges räumliches Bezugssystem (spatial reference " ++"system/SRID) passen oder falls Sie eine große Menge räumlicher Daten " ++"verarbeiten wollen. Hinweis: Es ist ziemlich einfach, einmalige Umwandlungen " ++"zwischen den zwei Typen vorzunehmen, um von den Vorteilen beider zu " ++"profitieren. Was derzeit unterstützt wird und was nicht, erfahren Sie unter " ++"." ++ ++#. Tag: para ++#: faq.xml:125 ++#, no-c-format ++msgid "" ++"Long Answer: Refer to our more lengthy discussion in the and function type matrix." ++msgstr "" ++"Lange Antwort: Eine ausführlichere Erörterung finden Sie unter und in der Funktionstypmatrix." ++ ++#. Tag: para ++#: faq.xml:133 ++#, no-c-format ++msgid "" ++"I have more intense questions about geography, such as how big of a " ++"geographic region can I stuff in a geography column and still get reasonable " ++"answers. Are there limitations such as poles, everything in the field must " ++"fit in a hemisphere (like SQL Server 2008 has), speed etc?" ++msgstr "" ++"Ich habe tiefergehende Fragen über »geography«, wie beispielsweise welche " ++"Größe einer geografischen Region kann ich in eine »geography«-Spalte stopfen " ++"und trotzdem noch vernünftige Antworten erhalten. Gibt es Beschränkungen wie " ++"Pole, etwas im Feld, das in eine Hemisphäre passen muss (wie bei SQL Server " ++"2008), Geschwindigkeit etc.?" ++ ++#. Tag: para ++#: faq.xml:137 ++#, no-c-format ++msgid "" ++"Your questions are too deep and complex to be adequately answered in this " ++"section. Please refer to our " ++"." ++msgstr "" ++"Ihre Fragen sind zu tiefgehend und komplex, um in diesem Abschnitt angemessen " ++"beantwortet werden zu können. Bitte lesen Sie unsere ." ++ ++#. Tag: para ++#: faq.xml:144 ++#, no-c-format ++msgid "How do I insert a GIS object into the database?" ++msgstr "Wie füge ich ein GIS-Objekt in die Datenbank ein?" ++ ++#. Tag: para ++#: faq.xml:148 ++#, no-c-format ++msgid "" ++"First, you need to create a table with a column of type \"geometry\" or " ++"\"geography\" to hold your GIS data. Storing geography type data is a little " ++"different than storing geometry. Refer to " ++" for details on storing geography." ++msgstr "" ++"Zuerst müssen Sie eine Tabelle mit einer Spalte des Typs »geometry« oder " ++"»geography« erstellen, die Ihre GIS-Daten bereithält. Das Speichern des " ++"Datentyps »geography« unterscheidet sich etwas vom Speichern des Datentyps " ++"»geometry«. Einzelheiten über das Speichern von »geography« finden Sie unter " ++"." ++ ++#. Tag: para ++#: faq.xml:152 ++#, no-c-format ++msgid "" ++"For geometry: Connect to your database with psql and try " ++"the following SQL:" ++msgstr "" ++"Für »geometry«: Verbinden Sie Ihre Datenbank mit psql " ++"und probieren Sie folgenden SQL-Befehl:" ++ ++#. Tag: programlisting ++#: faq.xml:156 ++#, no-c-format ++msgid "" ++"CREATE TABLE gtest ( gid serial primary key, name varchar(20)\n" ++" , geom geometry(LINESTRING) );" ++msgstr "" ++"CREATE TABLE gtest ( gid serial primary key, name varchar(20)\n" ++" , geom geometry(LINESTRING) );" ++ ++#. Tag: para ++#: faq.xml:158 ++#, no-c-format ++msgid "" ++"If the geometry column definition fails, you probably have not loaded the " ++"PostGIS functions and objects into this database or are using a pre-2.0 " ++"version of PostGIS. See the ." ++msgstr "" ++"Falls die Definition der Spalte »geometry« fehlschlägt, haben Sie " ++"wahrscheinlich die PostGIS-Funktionen und -Objekte nicht in Ihre Datenbank " ++"geladen oder Sie verwenden eine Version von PostGIS vor 2.0. Siehe ." ++ ++#. Tag: para ++#: faq.xml:162 ++#, no-c-format ++msgid "" ++"Then, you can insert a geometry into the table using a SQL insert statement. " ++"The GIS object itself is formatted using the OpenGIS Consortium \"well-known " ++"text\" format:" ++msgstr "" ++"Dann können Sie mittels eines SQL-INSERT-Befehls eine Geometrie in Ihre " ++"Tabelle einfügen. Das GIS-Objekt selbst ist mit dem Format »well-known-text« " ++"des OpenGIS-Konsortiums formatiert:" ++ ++#. Tag: programlisting ++#: faq.xml:166 ++#, no-c-format ++msgid "" ++"INSERT INTO gtest (ID, NAME, GEOM) \n" ++"VALUES (\n" ++" 1, \n" ++" 'First Geometry', \n" ++" ST_GeomFromText('LINESTRING(2 3,4 5,6 5,7 8)')\n" ++");" ++msgstr "" ++"INSERT INTO gtest (ID, NAME, GEOM) \n" ++"VALUES (\n" ++" 1, \n" ++" 'Erste Geometrie', \n" ++" ST_GeomFromText('LINESTRING(2 3,4 5,6 5,7 8)')\n" ++");" ++ ++#. Tag: para ++#: faq.xml:168 ++#, no-c-format ++msgid "" ++"For more information about other GIS objects, see the object reference." ++msgstr "" ++"Mehr Informationen über weitere GIS-Objekte finden Sie in der Objektreferenz." ++ ++#. Tag: para ++#: faq.xml:171 ++#, no-c-format ++msgid "To view your GIS data in the table:" ++msgstr "So sehen Sie sich Ihre GIS-Daten in der Tabelle an:" ++ ++#. Tag: programlisting ++#: faq.xml:173 ++#, no-c-format ++msgid "SELECT id, name, ST_AsText(geom) AS geom FROM gtest;" ++msgstr "SELECT id, name, ST_AsText(geom) AS geom FROM gtest;" ++ ++#. Tag: para ++#: faq.xml:175 ++#, no-c-format ++msgid "The return value should look something like this:" ++msgstr "Der Rückgabewert sollte etwa so aussehen:" ++ ++#. Tag: programlisting ++#: faq.xml:177 ++#, no-c-format ++msgid "" ++"id | name | geom\n" ++"----+----------------+-----------------------------\n" ++" 1 | First Geometry | LINESTRING(2 3,4 5,6 5,7 8) \n" ++"(1 row)" ++msgstr "" ++"id | name | geom\n" ++"----+----------------+-----------------------------\n" ++" 1 | First Geometry | LINESTRING(2 3,4 5,6 5,7 8) \n" ++"(1 row)" ++ ++#. Tag: para ++#: faq.xml:183 ++#, no-c-format ++msgid "How do I construct a spatial query?" ++msgstr "Wie erstelle ich eine räumliche Abfrage?" ++ ++#. Tag: para ++#: faq.xml:187 ++#, no-c-format ++msgid "" ++"The same way you construct any other database query, as an SQL combination of " ++"return values, functions, and boolean tests." ++msgstr "" ++"Auf die gleiche Weise, wie alle anderen Datenbankabfragen erstellt werden, " ++"als Kombination von Rückgabewerten, Funktionen und booleschen Tests." ++ ++#. Tag: para ++#: faq.xml:190 ++#, no-c-format ++msgid "" ++"For spatial queries, there are two issues that are important to keep in mind " ++"while constructing your query: is there a spatial index you can make use of; " ++"and, are you doing expensive calculations on a large number of geometries." ++msgstr "" ++"Es gibt bei räumlichen Abfragen zwei Aspekte, die Sie beim Erstellen Ihrer " ++"Abfrage im Hinterkopf behalten sollten: Es gibt einen räumlichen Index, von " ++"dem Sie Gebrauch machen können, und führen Sie aufwendige Berechnungen auf " ++"einer großen Zahl von Geometrien durch?" ++ ++#. Tag: para ++#: faq.xml:195 ++#, no-c-format ++msgid "" ++"In general, you will want to use the \"intersects operator\" (&&) " ++"which tests whether the bounding boxes of features intersect. The reason the " ++"&& operator is useful is because if a spatial index is available to " ++"speed up the test, the && operator will make use of this. This can " ++"make queries much much faster." ++msgstr "" ++"Im Allgemeinen werden Sie den »Überschneidungsoperator« (&&) benutzen " ++"wollen, der prüft, ob sich die Hüllquader der Objekte überschneiden. Der " ++"Hauptnutzen des &&-Operators besteht darin, dass er, falls ein " ++"räumlicher Index zum Beschleunigen des Tests verfügbar ist, Gebrauch davon " ++"macht. Dies kann Abfragen sehr stark beschleunigen." ++ ++#. Tag: para ++#: faq.xml:202 ++#, no-c-format ++msgid "" ++"You will also make use of spatial functions, such as Distance(), " ++"ST_Intersects(), ST_Contains() and ST_Within(), among others, to narrow down " ++"the results of your search. Most spatial queries include both an indexed test " ++"and a spatial function test. The index test serves to limit the number of " ++"return tuples to only tuples that might meet the " ++"condition of interest. The spatial functions are then use to test the " ++"condition exactly." ++msgstr "" ++"Sie werden auch von räumlichen Funktionen wie Distance(), ST_Intersects(), " ++"ST_Contains() und ST_Within() Gebrauch machen, um die Ergebnisse Ihrer Suche " ++"einzugrenzen. Die meisten räumlichen Abfragen enthalten sowohl einen " ++"indizierten als auch einen räumlichen Funktionstest. Der Indextest begrenzt " ++"die Auswahl von Tupeln auf nur diejenigen Tupel, die die Bedingung, die von " ++"Interesse ist, treffen könnten. Die räumlichen " ++"Funktionen werden dann verwendet, um die Bedingung genau zu prüfen." ++ ++#. Tag: programlisting ++#: faq.xml:210 ++#, no-c-format ++msgid "" ++"SELECT id, the_geom \n" ++"FROM thetable \n" ++"WHERE \n" ++" ST_Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))');" ++msgstr "" ++"SELECT id, the_geom \n" ++"FROM thetable \n" ++"WHERE \n" ++" ST_Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))');" ++ ++#. Tag: para ++#: faq.xml:216 ++#, no-c-format ++msgid "How do I speed up spatial queries on large tables?" ++msgstr "Wie kann ich räumliche Abfragen auf großen Tabellen beschleunigen?" ++ ++#. Tag: para ++#: faq.xml:220 ++#, no-c-format ++msgid "" ++"Fast queries on large tables is the raison d'etre of " ++"spatial databases (along with transaction support) so having a good index is " ++"important." ++msgstr "" ++"Schnelle Abfragen großer Tabellen sind die " ++"Daseinsberechtigung räumlicher Datenbanken (neben der " ++"Unterstützung von Transaktionen). Daher ist es wichtig, über einen guten " ++"Index zu verfügen." ++ ++#. Tag: para ++#: faq.xml:224 ++#, no-c-format ++msgid "" ++"To build a spatial index on a table with a geometry " ++"column, use the \"CREATE INDEX\" function as follows:" ++msgstr "" ++"Um einen räumlichen Index für eine Tablle mit einer geometry<" ++"/varname>-Spalte zu erstellen, benutzen Sie die Funktion »CREATE INDEX« wie " ++"folgt:" ++ ++#. Tag: programlisting ++#: faq.xml:228 ++#, no-c-format ++msgid "" ++"CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] );" ++msgstr "" ++"CREATE INDEX [indexname] ON [tabellenname] USING GIST ( [geometry_spalte] );" ++ ++#. Tag: para ++#: faq.xml:230 ++#, no-c-format ++msgid "" ++"The \"USING GIST\" option tells the server to use a GiST (Generalized Search " ++"Tree) index." ++msgstr "" ++"Die Option »USING GIST« teilt dem Server mit, dass er einen GiST-Index " ++"(Generalized Search Tree/Verallgemeinerter Suchbaum) verwenden soll." ++ ++#. Tag: para ++#: faq.xml:234 ++#, no-c-format ++msgid "" ++"GiST indexes are assumed to be lossy. Lossy indexes uses a proxy object (in " ++"the spatial case, a bounding box) for building the index." ++msgstr "" ++"Es wird von GiST-Indizes angenommen, dass sie verlustbehaftet sind. " ++"Verlustbehaftete Indizes verwenden ein Ersatzobjekt (im Fall räumlicher " ++"Objekte einen Hüllquader), um einen Index zu erstellen." ++ ++#. Tag: para ++#: faq.xml:239 ++#, no-c-format ++msgid "" ++"You should also ensure that the PostgreSQL query planner has enough " ++"information about your index to make rational decisions about when to use it. " ++"To do this, you have to \"gather statistics\" on your geometry tables." ++msgstr "" ++"Sie sollten außerdem sicherstellen, dass das " ++"PostgreSQL-Abfrageplanungsprogramm ausreichende Informationen über Ihren " ++"Index hat, um vernünftige Entscheidungen treffen zu können, wann er benutzt " ++"wird. Zu diesem Zweck müssen Sie für Ihre Geometrietabellen »Statistiken " ++"erstellen«." ++ ++#. Tag: para ++#: faq.xml:244 ++#, no-c-format ++msgid "" ++"For PostgreSQL 8.0.x and greater, just run the VACUUM ANALYZE<" ++"/command> command." ++msgstr "" ++"Unter PostgeSQL 8.0.x und neuer führen Sie einfach den Befehl VACUUM " ++"ANALYZE aus." ++ ++#. Tag: para ++#: faq.xml:247 ++#, no-c-format ++msgid "" ++"For PostgreSQL 7.4.x and below, run the SELECT " ++"UPDATE_GEOMETRY_STATS() command." ++msgstr "" ++"Unter PostgreSQL 7.4.x und älter führen Sie den Befehl SELECT " ++"UPDATE_GEOMETRY_STATS() aus." ++ ++# http://de.wikipedia.org/wiki/R-tree ++#. Tag: para ++#: faq.xml:254 ++#, no-c-format ++msgid "Why aren't PostgreSQL R-Tree indexes supported?" ++msgstr "Warum werden keine R-Baum-Indizes von PostgreSQL unterstützt?" ++ ++#. Tag: para ++#: faq.xml:258 ++#, no-c-format ++msgid "" ++"Early versions of PostGIS used the PostgreSQL R-Tree indexes. However, " ++"PostgreSQL R-Trees have been completely discarded since version 0.6, and " ++"spatial indexing is provided with an R-Tree-over-GiST scheme." ++msgstr "" ++"Ältere Versionen von PostGIS verwendeten die PostgreSQL-R-Baum-Indizes. " ++"PostgreSQL-R-Bäume wurden jedoch seit Version 0.6 komplett ausrangiert und " ++"räumliche Indizierung wird mit dem Schema »R-Tree-over-GiST« bereitgestellt." ++ ++#. Tag: para ++#: faq.xml:263 ++#, no-c-format ++msgid "" ++"Our tests have shown search speed for native R-Tree and GiST to be " ++"comparable. Native PostgreSQL R-Trees have two limitations which make them " ++"undesirable for use with GIS features (note that these limitations are due to " ++"the current PostgreSQL native R-Tree implementation, not the R-Tree concept " ++"in general):" ++msgstr "" ++"Unsere Tests haben gezeigt, dass die Suchgeschwindigkeit für native R-Bäume " ++"und GiST vergleichbar ist. Native PostgreSQL-R-Bäume haben zwei " ++"Einschränkungen, wegen der sie für den Gebrauch mit GIS-Objekten unerwünscht " ++"sind (beachten Sie, dass diese Einschränkungen aufgrund der Implementierung " ++"nativer PostgreSQL-R-Bäume und nicht wegen des Konzepts der R-Bäume im " ++"Allgemeinen bestehen):" ++ ++#. Tag: para ++#: faq.xml:271 ++#, no-c-format ++msgid "" ++"R-Tree indexes in PostgreSQL cannot handle features which are larger than 8K " ++"in size. GiST indexes can, using the \"lossy\" trick of substituting the " ++"bounding box for the feature itself." ++msgstr "" ++"R-Baum-Indizes können in PostgreSQL nicht mit Objekten umgehen, die größer " ++"als 8k sind. GiST-Indizes können dies mittels des »verlustbehafteten« Tricks, " ++"das Objekt selbst durch seinen Hüllquader zu ersetzen." ++ ++#. Tag: para ++#: faq.xml:278 ++#, no-c-format ++msgid "" ++"R-Tree indexes in PostgreSQL are not \"null safe\", so building an index on a " ++"geometry column which contains null geometries will fail." ++msgstr "" ++"R-Baum-Indizes sind in PostgreSQL nicht »nullsicher«, daher wird das Bilden " ++"eines Index auf einer »geometry«-Spalte, die Null-Geometrien enthält, " ++"scheitern." ++ ++#. Tag: para ++#: faq.xml:288 ++#, no-c-format ++msgid "" ++"Why should I use the AddGeometryColumn() function and all " ++"the other OpenGIS stuff?" ++msgstr "" ++"Warum soll ich die Funktion AddGeometryColumn() und all " ++"das andere OpenGIS-Zeug verwenden?" ++ ++#. Tag: para ++#: faq.xml:293 ++#, no-c-format ++msgid "" ++"If you do not want to use the OpenGIS support functions, you do not have to. " ++"Simply create tables as in older versions, defining your geometry columns in " ++"the CREATE statement. All your geometries will have SRIDs of -1, and the " ++"OpenGIS meta-data tables will not be filled in properly. " ++"However, this will cause most applications based on PostGIS to fail, and it " ++"is generally suggested that you do use AddGeometryColumn() " ++"to create geometry tables." ++msgstr "" ++"Falls Sie keine OpenGIS-Hilfsfunktionen nutzen möchten, müssen Sie dies " ++"nicht. Erstellen Sie einfach Ihre Tabellen in älteren Versionen, indem Sie " ++"Ihre »geometry«-Spalten im CREATE-Befehl erstellen. Alle Ihre Geometrien " ++"werden SRIDs von -1 haben und die OpenGIS-Metadatentabellen werden " ++"nicht ordentlich gefüllt. Dies wird jedoch die meisten" ++"Anwendungen, die auf PostGIS basieren, zum Abstürzen bringen und es wird " ++"generell empfohlen, dass Sie zum Erstellen von »geometry«-Tabellen " ++"AddGeometryColumn() verwenden." ++ ++#. Tag: para ++#: faq.xml:302 ++#, no-c-format ++msgid "" ++"MapServer is one application which makes use of the " ++"geometry_columns meta-data. Specifically, MapServer can use the " ++"SRID of the geometry column to do on-the-fly reprojection of features into " ++"the correct map projection." ++msgstr "" ++"MapServer ist eine dieser Anwendungen, die Gebrauch von " ++"geometry_columns-Metadaten machen. Insbesondere kann MapServer die " ++"SRID der »geometry«-Spalte nutzen, um direkt eine Rückprojektion von Objekten " ++"in die korrekte Abbildungsprojektion vorzunehmen." ++ ++#. Tag: para ++#: faq.xml:311 ++#, no-c-format ++msgid "" ++"What is the best way to find all objects within a radius of another object?" ++msgstr "" ++"Was ist der beste Weg, alle Objekte innerhalb eines Radius eines anderen " ++"Objekts zu finden?" ++ ++#. Tag: para ++#: faq.xml:316 ++#, no-c-format ++msgid "" ++"To use the database most efficiently, it is best to do radius queries which " ++"combine the radius test with a bounding box test: the bounding box test uses " ++"the spatial index, giving fast access to a subset of data which the radius " ++"test is then applied to." ++msgstr "" ++"Um die Datenbank möglichst effizient zu nutzen, ist es am besten " ++"Radiusabfragen zu verwenden. Diese kombinieren den Radiustest mit einem " ++"Hüllquadertest: Der Hüllquadertest benutzt den räumlichen Index, der " ++"schnellen Zugriff auf eine Untermenge von Daten gewährt, auf die dann der " ++"Radiustest angewendet wird." ++ ++#. Tag: para ++#: faq.xml:321 ++#, no-c-format ++msgid "" ++"The ST_DWithin(geometry, geometry, distance) function is a " ++"handy way of performing an indexed distance search. It works by creating a " ++"search rectangle large enough to enclose the distance radius, then performing " ++"an exact distance search on the indexed subset of results." ++msgstr "" ++"Die Funktion ST_DWithin(geometry, geometry, distance) ist " ++"eine praktische Art, eine Entfernungssuche per Index durchzuführen. Dazu wird " ++"ein Suchrechteck erstellt, das groß genug ist, um den Entfernungsradius " ++"einzuschließen. Dann wird in der indizitierten Untermenge der Ergebnisse die " ++"genaue Entfernung gesucht." ++ ++#. Tag: para ++#: faq.xml:327 ++#, no-c-format ++msgid "" ++"For example, to find all objects with 100 meters of POINT(1000 1000) the " ++"following query would work well:" ++msgstr "" ++"Um zum Beispiel alle Objekte mit 100 Metern Entfernung zu POINT(1000 1000) zu " ++"finden, wäre die folgende Abfrage gut geeignet:" ++ ++#. Tag: programlisting ++#: faq.xml:330 ++#, no-c-format ++msgid "" ++"SELECT * FROM geotable \n" ++"WHERE ST_DWithin(geocolumn, 'POINT(1000 1000)', 100.0);" ++msgstr "" ++"SELECT * FROM geotable \n" ++"WHERE ST_DWithin(geo_spalte, 'POINT(1000 1000)', 100.0);" ++ ++#. Tag: para ++#: faq.xml:336 ++#, no-c-format ++msgid "How do I perform a coordinate reprojection as part of a query?" ++msgstr "" ++"Wie kann ich die Koordinaten-Rückprojektion als Teil einer Abfrage " ++"durchführen?" ++ ++#. Tag: para ++#: faq.xml:341 ++#, no-c-format ++msgid "" ++"To perform a reprojection, both the source and destination coordinate systems " ++"must be defined in the SPATIAL_REF_SYS table, and the geometries being " ++"reprojected must already have an SRID set on them. Once that is done, a " ++"reprojection is as simple as referring to the desired destination SRID. The " ++"below projects a geometry to NAD 83 long lat. The below will only work if the " ++"srid of the_geom is not -1 (not undefined spatial ref)" ++msgstr "" ++"Um eine Rückprojektion durchzuführen, müssen sowohl die Quell- als auch die " ++"Zielkoordinatensysteme in einer SPATIAL_REF_SYS-Tabelle definiert sein und " ++"und die SRIDs der Geometrien, die rückprojiziert werden, müssen bereits " ++"gesetzt sein. Sobald dies erledigt ist, ist die Rückprojektion so einfach wie " ++"Bezug auf die gewünschte Ziel-SRID zu nehmen. Nachfolgend wird eine Geometrie " ++"auf »NAD 83 long lat« projiziert. Das Folgende funktioniert nur, falls die " ++"SRID der Geometrie nicht -1 ist (keine undefinierte räumliche Referenz)." ++ ++#. Tag: programlisting ++#: faq.xml:348 ++#, no-c-format ++msgid "SELECT ST_Transform(the_geom,4269) FROM geotable;" ++msgstr "SELECT ST_Transform(die_geometrie,4269) FROM geometrietabelle;" ++ ++#. Tag: para ++#: faq.xml:354 ++#, no-c-format ++msgid "" ++"I did an ST_AsEWKT and ST_AsText on my rather large geometry and it returned " ++"blank field. What gives?" ++msgstr "" ++"Ich führte ein ST_AsEWKT und ST_AsText auf meiner eher großen Geometrie aus " ++"und erhielt ein leeres Feld zurück. Was ist passiert?" ++ ++#. Tag: para ++#: faq.xml:358 ++#, no-c-format ++msgid "" ++"You are probably using PgAdmin or some other tool that doesn't output large " ++"text. If your geometry is big enough, it will appear blank in these tools. " ++"Use PSQL if you really need to see it or output it in WKT." ++msgstr "" ++"Sie verwenden vermutlich PgAdmin oder irgendein anderes Werkzeug, das keine " ++"großen Texte ausgibt. Falls Ihre Geometrie groß genug ist, wird sie in diesen " ++"Werkzeugen leer erscheinen. Falls Sie sie wirklich sehen oder in WKT ausgeben " ++"möchten, verwenden Sie PSQL." ++ ++#. Tag: programlisting ++#: faq.xml:361 ++#, no-c-format ++msgid "" ++"--To check number of geometries are really blank\n" ++" SELECT count(gid) FROM geotable WHERE " ++"the_geom IS NULL;" ++msgstr "" ++"--zum Prüfen, ob die Anzahl der Geometrien wirklich leer ist\n" ++" SELECT count(gid) FROM geotable WHERE " ++"the_geom IS NULL;" ++ ++#. Tag: para ++#: faq.xml:367 ++#, no-c-format ++msgid "" ++"When I do an ST_Intersects, it says my two geometries don't intersect when I " ++"KNOW THEY DO. What gives?" ++msgstr "" ++"Wenn ich ein ST_Intersects ausführe, sagt es, dass sich meine beiden " ++"Geometrien nicht überschneiden, obwohl ICH WEIẞ, DASS SIE DIES TUN. Was ist " ++"passiert?" ++ ++#. Tag: para ++#: faq.xml:371 ++#, no-c-format ++msgid "" ++"This generally happens in two common cases. Your geometry is invalid -- check " ++" or you are assuming they intersect because " ++"ST_AsText truncates the numbers and you have lots of decimals after it is not " ++"showing you." ++msgstr "" ++"Im Allgemeinen kommt das in zwei Fällen vor. Ihre Geometrie ist ungültig – " ++"prüfen Sie dies mit oder Sie gehen davon aus, " ++"dass sie sich überschneiden, da ST_AsText die Zahlen rundet und Sie viele " ++"Dezimalstellen dahinter haben, die Ihnen nicht angezeigt werden." ++ ++#. Tag: para ++#: faq.xml:379 ++#, no-c-format ++msgid "" ++"I am releasing software that uses PostGIS, does that mean my software has to " ++"be licensed using the GPL like PostGIS? Will I have to publish all my code if " ++"I use PostGIS?" ++msgstr "" ++"Ich veröffentliche Software, die PostGIS verwendet. Bedeutet das, dass meine " ++"Software wie PostGIS unter der GPL lizenziert werden muss? Muss ich all " ++"meinen Code veröffentlichen, falls ich PostGIS benutze?" ++ ++#. Tag: para ++#: faq.xml:383 ++#, no-c-format ++msgid "" ++"Almost certainly not. As an example, consider Oracle database running on " ++"Linux. Linux is GPL, Oracle is not, does Oracle running on Linux have to be " ++"distributed using the GPL? No. So your software can use a PostgreSQL/PostGIS " ++"database as much as it wants and be under any license you like." ++msgstr "" ++"Höchstwahrscheinlich nicht. Oracle-Datenbanken laufen zum Beispiel unter " ++"Linux. Linux steht unter der GPL, Oracles Datenbank nicht. Muss Oracles " ++"Datenbank, die unter Linux läuft, unter der GPL verteilt werden? Nein. Daher " ++"kann Ihre Software die PostgreSQL/-PostGIS-Datenbank soviel nutzen, wie Sie " ++"wollen, und kann unter der von Ihnen gewünschten Lizenz vorliegen." ++ ++#. Tag: para ++#: faq.xml:384 ++#, no-c-format ++msgid "" ++"The only exception would be if you made changes to the PostGIS source code, " ++"and distributed your changed version of PostGIS. In that case you would have " ++"to share the code of your changed PostGIS (but not the code of applications " ++"running on top of it). Even in this limited case, you would still only have " ++"to distribute source code to people you distributed binaries to. The GPL does " ++"not require that you publish your source code, only that " ++"you share it with people you give binaries to." ++msgstr "" ++"Die einzige Ausnahme wäre, wenn Sie Veränderungen am PostGIS-Quellcode " ++"vorgenommen hätten und Ihre veränderte Version von PostGIS verteilen würden. " ++"In diesem Fall müssten Sie den Code Ihres veränderten PostGIS freigeben (aber " ++"nicht den Code von Anwendungen, die darauf laufen). Sogar in diesem " ++"begrenzten Fall müssten Sie nur den Quellcode an Leute verteilen, denen Sie " ++"Binärcode weitergegeben haben. Die GPL verlangt nicht, dass Sie Ihren " ++"Quellcode veröffentlichen, nur dass Sie ihn mit Leuten " ++"teilen, denen Sie Binärcode geben." diff -Nru postgis-2.1.1/debian/patches/doc-resources postgis-2.1.2+dfsg/debian/patches/doc-resources --- postgis-2.1.1/debian/patches/doc-resources 2014-01-19 17:09:22.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/doc-resources 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -Description: add HTML documentation resources (CSS, images) -Author: Andrew Harvey -Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649352 -Last-Update: 2014-01-19 - ---- a/doc/Makefile.in -+++ b/doc/Makefile.in -@@ -318,13 +318,17 @@ - rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/shp2pgsql.1 - rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/pgsql2shp.1 - --docs-install: html/postgis.html -- mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis -- $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html -+docs-install: html/postgis.html html/style.css -+ mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images -+ $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ -+ $(INSTALL_DATA) html/style.css $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ -+ $(INSTALL_DATA) html/images/* $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images/ - $(INSTALL_DATA) ../README.postgis $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis - - docs-uninstall: - rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html -+ rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/style.css -+ rm -rf $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images - rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis - - install: comments-install diff -Nru postgis-2.1.1/debian/patches/fix-armel postgis-2.1.2+dfsg/debian/patches/fix-armel --- postgis-2.1.1/debian/patches/fix-armel 2014-01-09 19:22:56.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/fix-armel 2014-04-05 19:33:47.000000000 +0000 @@ -3,12 +3,14 @@ functions return an int ranging from -1 to +1. This patch properly preserves that type and prevents the bogus conversion to bool. Thus correcting the return value and fixing multiple tests on armel. +Forwarded: yes +Bug-Upstream: http://trac.osgeo.org/postgis/ticket/2605 Author: Markus Wanner Last-Update: 2014-01-09 --- a/postgis/lwgeom_geos.c +++ b/postgis/lwgeom_geos.c -@@ -1990,6 +1990,7 @@ +@@ -1990,6 +1990,7 @@ Datum contains(PG_FUNCTION_ARGS) LWPOINT *point; RTREE_POLY_CACHE *poly_cache; bool result; @@ -16,7 +18,7 @@ PrepGeomCache *prep_cache; geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); -@@ -2037,15 +2038,15 @@ +@@ -2037,15 +2038,15 @@ Datum contains(PG_FUNCTION_ARGS) if ( poly_cache && poly_cache->ringIndices ) { @@ -35,7 +37,7 @@ } else { -@@ -2057,7 +2058,7 @@ +@@ -2057,7 +2058,7 @@ Datum contains(PG_FUNCTION_ARGS) lwpoint_free(point); PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); @@ -44,7 +46,7 @@ { PG_RETURN_BOOL(TRUE); } -@@ -2213,6 +2214,7 @@ +@@ -2213,6 +2214,7 @@ Datum covers(PG_FUNCTION_ARGS) GSERIALIZED *geom1; GSERIALIZED *geom2; bool result; @@ -52,7 +54,7 @@ GBOX box1, box2; int type1, type2; LWGEOM *lwgeom; -@@ -2263,15 +2265,15 @@ +@@ -2263,15 +2265,15 @@ Datum covers(PG_FUNCTION_ARGS) if ( poly_cache && poly_cache->ringIndices ) { @@ -71,7 +73,7 @@ } else { -@@ -2284,7 +2286,7 @@ +@@ -2284,7 +2286,7 @@ Datum covers(PG_FUNCTION_ARGS) lwpoint_free(point); PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); @@ -80,7 +82,7 @@ { PG_RETURN_BOOL(TRUE); } -@@ -2368,6 +2370,7 @@ +@@ -2368,6 +2370,7 @@ Datum coveredby(PG_FUNCTION_ARGS) GSERIALIZED *geom2; GEOSGeometry *g1, *g2; bool result; @@ -88,7 +90,7 @@ GBOX box1, box2; LWGEOM *lwgeom; LWPOINT *point; -@@ -2418,15 +2421,15 @@ +@@ -2418,15 +2421,15 @@ Datum coveredby(PG_FUNCTION_ARGS) if ( poly_cache && poly_cache->ringIndices ) { @@ -107,7 +109,7 @@ } else { -@@ -2439,7 +2442,7 @@ +@@ -2439,7 +2442,7 @@ Datum coveredby(PG_FUNCTION_ARGS) lwpoint_free(point); PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); @@ -116,7 +118,7 @@ { PG_RETURN_BOOL(TRUE); } -@@ -2493,7 +2496,7 @@ +@@ -2493,7 +2496,7 @@ Datum crosses(PG_FUNCTION_ARGS) GSERIALIZED *geom1; GSERIALIZED *geom2; GEOSGeometry *g1, *g2; @@ -125,7 +127,7 @@ GBOX box1, box2; geom1 = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); -@@ -2562,6 +2565,7 @@ +@@ -2562,6 +2565,7 @@ Datum geos_intersects(PG_FUNCTION_ARGS) GSERIALIZED *geom2; GSERIALIZED *serialized_poly; bool result; @@ -133,7 +135,7 @@ GBOX box1, box2; int type1, type2, polytype; LWPOINT *point; -@@ -2623,15 +2627,15 @@ +@@ -2623,15 +2627,15 @@ Datum geos_intersects(PG_FUNCTION_ARGS) if ( poly_cache && poly_cache->ringIndices ) { @@ -152,7 +154,7 @@ } else { -@@ -2644,7 +2648,7 @@ +@@ -2644,7 +2648,7 @@ Datum geos_intersects(PG_FUNCTION_ARGS) lwpoint_free(point); PG_FREE_IF_COPY(geom1, 0); PG_FREE_IF_COPY(geom2, 1); diff -Nru postgis-2.1.1/debian/patches/fix-big-endian postgis-2.1.2+dfsg/debian/patches/fix-big-endian --- postgis-2.1.1/debian/patches/fix-big-endian 2014-01-23 17:56:24.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/fix-big-endian 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -Description: Fix big-endian testing - Fix FTBFS on at least powerpc and mips by commenting out a few tests - that check against a serialized representation, which is architecture - dependent. -Author: Markus Wanner -Last-Update: 2014-01-18 - ---- a/regress/sql-mm-curvepoly.sql -+++ b/regress/sql-mm-curvepoly.sql -@@ -336,7 +336,9 @@ - SELECT 'valid ewkb curve polygon 3', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000001000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); - SELECT 'valid ewkb curve polygon 4', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); - SELECT 'valid ewkb curve polygon 5', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00109000000030000000108000000030000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c001020000000200000000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c0010800000003000000000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); --SELECT 'valid curve 6', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); -+-- Tests 'valid curve 6' and 'valid curve 8' will also fail on big endian architectures -+-- We need a way to handle multiple byte orderings -+-- SELECT 'valid curve 6', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); - SELECT 'valid curve 7', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1) )'); --SELECT 'valid curve 8', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); -+-- SELECT 'valid curve 8', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); - SELECT 'null response', ST_NumPoints(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )')); ---- a/regress/sql-mm-curvepoly_expected -+++ b/regress/sql-mm-curvepoly_expected -@@ -89,7 +89,5 @@ - valid ewkb curve polygon 3|CURVEPOLYGON(CIRCULARSTRING(143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768)) - valid ewkb curve polygon 4|CURVEPOLYGON(CIRCULARSTRING(143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768),(144.843993552527 -31.2612392402209,144.205519526017 -32.2721564488616,145.552307128906 -33.4920387268066,147.970809936523 -32.0361862182617,146.386972449926 -31.4740639157242,144.843993552527 -31.2612392402209)) - valid ewkb curve polygon 5|CURVEPOLYGON((143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768),COMPOUNDCURVE(CIRCULARSTRING(144.843993552527 -31.2612392402209,144.205519526017 -32.2721564488616,145.552307128906 -33.4920387268066),(145.552307128906 -33.4920387268066,147.970809936523 -32.0361862182617),CIRCULARSTRING(147.970809936523 -32.0361862182617,146.386972449926 -31.4740639157242,144.843993552527 -31.2612392402209))) --valid curve 6|010A0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F - ERROR: geometry requires more points --valid curve 8|010A0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000020000000000000000001040000000000000084000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F - null response| ---- a/regress/empty.sql -+++ b/regress/empty.sql -@@ -123,13 +123,6 @@ - WITH inp AS (SELECT - 'POLYGON EMPTY'::geometry as empty, - 1 as n -- ) SELECT 'ST_GeometryN(empty, n) == empty', ST_GeometryN(empty, n) FROM inp; --WITH inp AS (SELECT -- 'POLYGON EMPTY'::geometry as empty -- ) SELECT 'ST_ExteriorRing(empty) == empty', ST_ExteriorRing(empty) FROM inp; --WITH inp AS (SELECT -- 'POLYGON EMPTY'::geometry as empty, -- 1 as n - ) SELECT 'ST_InteriorRingN(empty, n) == NULL', ST_InteriorRingN(empty, n) FROM inp; - WITH inp AS (SELECT - 'POLYGON EMPTY'::geometry as empty ---- a/regress/empty_expected -+++ b/regress/empty_expected -@@ -47,8 +47,6 @@ - ST_NRings(empty) == 0|0 - ST_NumPoints(empty) == 0|0 - ST_NPoints(empty) == 0|0 --ST_GeometryN(empty, n) == empty|010300000000000000 --ST_ExteriorRing(empty) == empty|010200000000000000 - ST_InteriorRingN(empty, n) == NULL| - ST_Area(empty) == 0|0 - ST_Length(empty) == 0|0 diff -Nru postgis-2.1.1/debian/patches/fix-spelling postgis-2.1.2+dfsg/debian/patches/fix-spelling --- postgis-2.1.1/debian/patches/fix-spelling 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/fix-spelling 2014-04-05 19:33:47.000000000 +0000 @@ -4,7 +4,7 @@ --- a/liblwgeom/lwout_wkt.c +++ b/liblwgeom/lwout_wkt.c -@@ -323,7 +323,7 @@ +@@ -323,7 +323,7 @@ static void lwcompound_to_wkt_sb(const L } else { @@ -13,7 +13,7 @@ } } stringbuffer_append(sb, ")"); -@@ -370,7 +370,7 @@ +@@ -370,7 +370,7 @@ static void lwcurvepoly_to_wkt_sb(const lwcompound_to_wkt_sb((LWCOMPOUND*)cpoly->rings[i], sb, precision, variant ); break; default: @@ -22,7 +22,7 @@ } } stringbuffer_append(sb, ")"); -@@ -418,7 +418,7 @@ +@@ -418,7 +418,7 @@ static void lwmcurve_to_wkt_sb(const LWM lwcompound_to_wkt_sb((LWCOMPOUND*)mcurv->geoms[i], sb, precision, variant ); break; default: @@ -31,7 +31,7 @@ } } stringbuffer_append(sb, ")"); -@@ -462,7 +462,7 @@ +@@ -462,7 +462,7 @@ static void lwmsurface_to_wkt_sb(const L lwcurvepoly_to_wkt_sb((LWCURVEPOLY*)msurf->geoms[i], sb, precision, variant); break; default: diff -Nru postgis-2.1.1/debian/patches/honor-build-flags postgis-2.1.2+dfsg/debian/patches/honor-build-flags --- postgis-2.1.1/debian/patches/honor-build-flags 2014-01-17 08:24:20.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/honor-build-flags 2014-04-05 19:33:47.000000000 +0000 @@ -8,7 +8,7 @@ --- a/loader/Makefile.in +++ b/loader/Makefile.in -@@ -97,11 +97,11 @@ +@@ -97,11 +97,11 @@ pgsql2shp-cli.o: pgsql2shp-cli.c pgsql2s $(PGSQL2SHP-CLI): $(SHPLIB_OBJS) pgsql2shp-core.o pgsql2shp-cli.o $(LIBLWGEOM) $(LIBTOOL) --mode=link \ @@ -22,7 +22,7 @@ shp2pgsql-gui.o: shp2pgsql-gui.c shp2pgsql-core.h shpcommon.h $(CC) $(CFLAGS) $(GTK_CFLAGS) $(PGSQL_FE_CPPFLAGS) -o $@ -c shp2pgsql-gui.c -@@ -109,7 +109,7 @@ +@@ -109,7 +109,7 @@ shp2pgsql-gui.o: shp2pgsql-gui.c shp2pgs $(SHP2PGSQL-GUI): $(SHPLIB_OBJS) shp2pgsql-core.o shp2pgsql-gui.o pgsql2shp-core.o $(LIBLWGEOM) $(GTK_WIN32_RES) $(LIBTOOL) --mode=link \ $(CC) $(CFLAGS) $(GTK_WIN32_FLAGS) $^ -o $@ \ @@ -41,7 +41,7 @@ CFLAGS = @CFLAGS@ @PICFLAGS@ @WARNFLAGS@ @GEOS_CPPFLAGS@ @PROJ_CPPFLAGS@ @JSON_CPPFLAGS@ LDFLAGS = @LDFLAGS@ @GEOS_LDFLAGS@ -lgeos_c @PROJ_LDFLAGS@ -lproj @JSON_LDFLAGS@ NUMERICFLAGS = @NUMERICFLAGS@ -@@ -153,10 +154,10 @@ +@@ -153,10 +154,10 @@ check: liblwgeom.la # Command to build each of the .lo files $(LT_SA_OBJS): %.lo: %.c @@ -56,7 +56,7 @@ # Bison 2.5, Flex 2.5.35 --- a/configure +++ b/configure -@@ -19730,7 +19730,7 @@ +@@ -19742,7 +19742,7 @@ cat >>confdefs.h <<_ACEOF _ACEOF diff -Nru postgis-2.1.1/debian/patches/java-version-fix postgis-2.1.2+dfsg/debian/patches/java-version-fix --- postgis-2.1.1/debian/patches/java-version-fix 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/java-version-fix 2014-04-05 19:33:47.000000000 +0000 @@ -1,6 +1,6 @@ Description: Correct postgis java jdbc version. Author: Markus Wanner -Last-Update: 2013-04-14 +Last-Update: 2014-01-28 --- a/java/jdbc/pom.xml +++ b/java/jdbc/pom.xml @@ -17,12 +17,3 @@ -@@ -176,7 +176,7 @@ - - 2 - 1 -- 0SVN -+ 0~rc1 - - - diff -Nru postgis-2.1.1/debian/patches/joinsel-issue2543 postgis-2.1.2+dfsg/debian/patches/joinsel-issue2543 --- postgis-2.1.1/debian/patches/joinsel-issue2543 2014-01-17 08:30:40.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/joinsel-issue2543 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -Description: Apply proposed patch from upstream bug #2543 - Not quite how important upstream issue #2543 is in the wild, but the - proposed fix seems save in any case. On MIPS, I occasionally see very - high selectivity values, with indicates a bug. For now, let's just - cap the selectivity at 1.0. -Author: Paul Ramsey -Bug: http://trac.osgeo.org/postgis/ticket/2543 -Origin: upstream, http://trac.osgeo.org/postgis/attachment/ticket/2543/joinsel.patch -Last-Update: 2013-11-13 - ---- a/postgis/gserialized_estimate.c -+++ b/postgis/gserialized_estimate.c -@@ -1075,6 +1075,10 @@ - */ - selectivity = val / ntuples_max; - -+ /* Guard against over-estimates :) */ -+ if ( selectivity > 1.0 ) -+ selectivity = 1.0; -+ - return selectivity; - } - diff -Nru postgis-2.1.1/debian/patches/link-liblwgeom postgis-2.1.2+dfsg/debian/patches/link-liblwgeom --- postgis-2.1.1/debian/patches/link-liblwgeom 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/link-liblwgeom 2014-04-05 19:33:47.000000000 +0000 @@ -6,7 +6,7 @@ --- a/postgis/Makefile.in +++ b/postgis/Makefile.in -@@ -83,14 +83,8 @@ +@@ -83,14 +83,8 @@ PG_OBJS= \ OBJS=$(PG_OBJS) # Libraries to link into the module (proj, geos) @@ -24,7 +24,7 @@ ifeq (@SFCGAL@,sfcgal) --- a/raster/rt_pg/Makefile.in +++ b/raster/rt_pg/Makefile.in -@@ -38,14 +38,7 @@ +@@ -38,14 +38,7 @@ SQL_OBJS=rtpostgis.sql rtpostgis_drop.sq OBJS=rt_pg.o # Libraries to link into the module (proj, geos) @@ -42,7 +42,7 @@ LIBPGCOMMON_LDFLAGS=../../libpgcommon/libpgcommon.a --- a/raster/loader/Makefile.in +++ b/raster/loader/Makefile.in -@@ -37,7 +37,7 @@ +@@ -37,7 +37,7 @@ PGSQL_BINDIR=@PGSQL_BINDIR@ RT_CORE=../rt_core diff -Nru postgis-2.1.1/debian/patches/series postgis-2.1.2+dfsg/debian/patches/series --- postgis-2.1.1/debian/patches/series 2014-01-19 17:05:34.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/patches/series 2014-04-05 19:33:47.000000000 +0000 @@ -4,9 +4,6 @@ link-liblwgeom use-debian-maven honor-build-flags -fix-kfreebsd fix-armel -fix-big-endian fix-manpage -joinsel-issue2543 -doc-resources +de-translation diff -Nru postgis-2.1.1/debian/postgis-doc.install postgis-2.1.2+dfsg/debian/postgis-doc.install --- postgis-2.1.1/debian/postgis-doc.install 2014-01-19 16:07:29.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/postgis-doc.install 2014-04-05 19:33:47.000000000 +0000 @@ -1,3 +1,3 @@ usr/share/doc/postgis/postgis.html usr/share/doc/postgis-doc/ usr/share/doc/postgis/style.css usr/share/doc/postgis-doc/ -usr/share/doc/postgis/images usr/share/doc/postgis-doc/ \ No newline at end of file +usr/share/doc/postgis/images usr/share/doc/postgis-doc/ diff -Nru postgis-2.1.1/debian/postgis.manpages postgis-2.1.2+dfsg/debian/postgis.manpages --- postgis-2.1.1/debian/postgis.manpages 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/postgis.manpages 2014-04-05 19:33:47.000000000 +0000 @@ -1,3 +1,4 @@ doc/man/pgsql2shp.1 doc/man/shp2pgsql.1 loader/shp2pgsql-gui.1 +debian/raster2pgsql.1 diff -Nru postgis-2.1.1/debian/raster2pgsql.1 postgis-2.1.2+dfsg/debian/raster2pgsql.1 --- postgis-2.1.1/debian/raster2pgsql.1 1970-01-01 00:00:00.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/raster2pgsql.1 2014-04-05 19:33:47.000000000 +0000 @@ -0,0 +1,130 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1. +.TH RASTER2PGSQL "1" "April 2014" "raster2pgsql RELEASE: 2.1.2 GDAL_VERSION=110 (r12389)" "User Commands" +.SH NAME +raster2pgsql \- loads GDAL supported raster formats into a PostGIS raster table +.SH DESCRIPTION +raster2pgsql is a raster loader executable that loads GDAL supported raster formats into sql suitable for loading into a PostGIS raster table. It is capable of loading folders of raster files as well as creating overviews of rasters. +.TP +Since the raster2pgsql is compiled as part of PostGIS most often (unless you compile your own GDAL library), the raster types supported by the executable will be the same as those compiled in the GDAL dependency library. To get a list of raster types your particular raster2pgsql supports use the \-G switch. These should be the same as those provided by your PostGIS install documented here ST_GDALDrivers if you are using the same gdal library for both. +.SH "SYNOPTIS" +.HP +raster2pgsql [] [ [ ...]] [[.]] +.HP +Multiple rasters can also be specified using wildcards (*,?). +.SH "OPTIONS" +.HP +\fB\-s\fR Set the raster's SRID. Defaults to 0. If SRID not +.IP +provided or is 0, raster's metadata will be checked to +determine an appropriate SRID. +.HP +\fB\-b\fR Index (1\-based) of band to extract from raster. For more +.IP +than one band index, separate with comma (,). Ranges can be +defined by separating with dash (\-). If unspecified, all bands +of raster will be extracted. +.HP +\fB\-t\fR Cut raster into tiles to be inserted one per +.IP +table row. is expressed as WIDTHxHEIGHT. + can also be "auto" to allow the loader to compute +an appropriate tile size using the first raster and applied to +all rasters. +.HP +\fB\-P\fR Pad right\-most and bottom\-most tiles to guarantee that all tiles +.IP +have the same width and height. +.TP +\fB\-R\fR +Register the raster as an out\-of\-db (filesystem) raster. Provided +raster should have absolute path to the file +.IP +(\fB\-d\fR|a|c|p) These are mutually exclusive options: +.TP +\fB\-d\fR +Drops the table, then recreates it and populates +it with current raster data. +.TP +\fB\-a\fR +Appends raster into current table, must be +exactly the same table schema. +.TP +\fB\-c\fR +Creates a new table and populates it, this is the +default if you do not specify any options. +.TP +\fB\-p\fR +Prepare mode, only creates the table. +.HP +\fB\-f\fR Specify the name of the raster column +.TP +\fB\-F\fR +Add a column with the filename of the raster. +.HP +\fB\-n\fR Specify the name of the filename column. Implies \fB\-F\fR. +.HP +\fB\-l\fR Create overview of the raster. For more than +.IP +one factor, separate with comma(,). Overview table name follows +the pattern o__
. Created overview is +stored in the database and is not affected by \fB\-R\fR. +.TP +\fB\-q\fR +Wrap PostgreSQL identifiers in quotes. +.TP +\fB\-I\fR +Create a GIST spatial index on the raster column. The ANALYZE +command will automatically be issued for the created index. +.TP +\fB\-M\fR +Run VACUUM ANALYZE on the table of the raster column. Most +useful when appending raster to existing table with \fB\-a\fR. +.TP +\fB\-C\fR +Set the standard set of constraints on the raster +column after the rasters are loaded. Some constraints may fail +if one or more rasters violate the constraint. +.TP +\fB\-x\fR +Disable setting the max extent constraint. Only applied if +\fB\-C\fR flag is also used. +.TP +\fB\-r\fR +Set the constraints (spatially unique and coverage tile) for +regular blocking. Only applied if \fB\-C\fR flag is also used. +.HP +\fB\-T\fR Specify the tablespace for the new table. +.IP +Note that indices (including the primary key) will still use +the default tablespace unless the \fB\-X\fR flag is also used. +.HP +\fB\-X\fR Specify the tablespace for the table's new index. +.IP +This applies to the primary key and the spatial index if +the \fB\-I\fR flag is used. +.HP +\fB\-N\fR NODATA value to use on bands without a NODATA value. +.TP +\fB\-k\fR +Skip NODATA value checks for each raster band. +.HP +\fB\-E\fR Control endianness of generated binary output of +.IP +raster. Use 0 for XDR and 1 for NDR (default). Only NDR +is supported at this time. +.HP +\fB\-V\fR Specify version of output WKB format. Default +.IP +is 0. Only 0 is supported at this time. +.TP +\fB\-e\fR +Execute each statement individually, do not use a transaction. +.TP +\fB\-Y\fR +Use COPY statements instead of INSERT statements. +.TP +\fB\-G\fR +Print the supported GDAL raster formats. +.TP +\-? +Display the help screen. diff -Nru postgis-2.1.1/debian/README.Debian postgis-2.1.2+dfsg/debian/README.Debian --- postgis-2.1.1/debian/README.Debian 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/README.Debian 2014-04-05 19:33:47.000000000 +0000 @@ -1,180 +1,54 @@ Debian README for Postgis ========================= -These are the PostGIS packages for Debian. PostGIS is split into three -Debian packages: +These are the PostGIS packages for Debian. PostGIS is split into +multiple Debian packages: -postgresql-N.M-postgis - This is the PostGIS module for the PostgreSQL server itself. It contains - the library which is loaded by the server (postgis.so), the SQL script - for creating the SQL functions in a given database (postgis.sql), and an - SQL script which contains the OpenGIS Spatial References - (spatial_ref_sys.sql). - - DIR=/usr/share/postgresql/*/contrib/postgis-* - psql -d [yourdatabase] -f $DIR/postgis.sql - psql -d [yourdatabase] -f $DIR/spatial_ref_sys.sql - - NOTE: To install PostGIS you must run the postgis.sql script in each - PostgreSQL database you want PostGIS in as the PostgreSQL superuser - (generally the 'postgres' user)! The Debian utilities do not do - this automatically as they can't be sure what state your database is in, - what database(s) you would want PostGIS installed in, or how to - authenticate as the PostgreSQL superuser to your database. It is likely - that a PostGIS user would also want the Spatial References installed and - so it is recommended that the spatial_ref_sys.sql also be run in each - database you have PostGIS installed in. - - If you wish to add comments to the PostGIS functions, the final step is - to load the postgis_comments.sql into your spatial database. The comments - can be viewed by simply typing \dd [function_name] from a psql terminal window. +postgresql-N.M-postgis-X.Y + This is the PostGIS module for the PostgreSQL server itself. It + contains the library which is loaded by the server (postgis.so), as + of PostGIS version X.Y and for PostgreSQL version N.M. + + Once the extension is created for a database, this package usually + is enough to keep PostGIS running. An upgrade may provide a newer + PostGIS version of this package that can be installed in parallel. + Therefore not touching existing installations. You'll need to run + the appropriate SQL scripts to upgrade your databases to use a newer + PostGIS version, though. Of course, this does not apply to patch + releases or bug fixes. + + +postgresql-N.M-postgis-scripts + This package provides necessary scripts for creating or upgrading + the PostGIS extension in a given database, the extension's control + file, and various other SQL scripts. + + To install the PostGIS extension as well as its topology extension + in a specific database, you need to run the following SQL commands + from your database prompt: - psql -d [yourdatabase] -f postgis_comments.sql + CREATE EXTENSION postgis; + CREATE EXTENSION postgis_topology; -- optional - These scripts can be found in the /usr/share/postgresql/N.M/contrib/postgisX.Y - directory. + PostGIS also ships a decoder for TIGER data in a separate extension + that can additionally be installed as follows: -postgis - This package contains the user-oriented PostGIS utilities for loading - data into and pulling data out of a PostGIS-enabled PostgreSQL database. - These utilities are: pgsql2shp and shp2pgsql. These utilities can be - installed and used separately from the server module on client machines. - -libpostgis-java - This package contains the Java library for using JDBC with a PostGIS- - enabled PostgreSQL server. - -[ - Note that the Postgis extension could be provided also for another - version of PostgreSQL (e.g. 8.3). All information are also valid - in that case. -] - -How to create a Postgis-enabled database -======================================== - -Type as root: - - # Become a postgresql superuser - su - postgres - - # Create the user (allowed to log in and with password) - createuser -l -W - - # Shall the new role be a superuser? (y/n) n - # Shall the new role be allowed to create databases? (y/n) n - # Shall the new role be allowed to create more new roles? (y/n) n - # Password: - - # create database ownered by user - createdb --o - - # Need to enable plpgsql for the database before loading the functions - createlang plpgsql -d - - # Finally, load the functions and reference system tables - psql -f /usr/share/postgresql/*/contrib/postgis-*/postgis.sql - psql -f /usr/share/postgresql/*/contrib/postgis-*/spatial_ref_sys.sql - - - # login in new database (still as superuser postgres) - psql - - # grant privilege on standard ogc tables to user - grant all on geometry_columns to ; - grant select on spatial_ref_sys to ; - - # exit from postgres - \q - - # log out from unix user postgres and from root. As normal user, enter - # in your new db: - psql -h -U -d - - # you are in your new geodb - # have a look of tables - \dt - - # have a look of functions - \df - - # have a look of spatial_ref_sys - select * from spatial_ref_sys; - - - -How to create a Postgis-enabled template database -================================================= + CREATE EXTENSION fuzzystrmatch; + CREATE EXTENSION postgis_tiger_decoder; -If you want to create a template_gis to use as template for every new -geodatabase, type as root: - # Become a postgresql superuser - su - postgres - - # create database (owner:postgres) - createdb template_gis - - # Need to enable plpgsql for the database beforeloading the functions - createlang plpgsql -d template_gis - - # Finally, load the functions and reference system tables - psql template_gis -f /usr/share/postgresql/*/contrib/postgis-*/postgis.sql - psql template_gis -f /usr/share/postgresql/*/contrib/postgis-*/spatial_ref_sys.sql - - # login in new database (still as superuser postgres) - psql template_gis - - # transform new db in template - update pg_database SET datistemplate='true' where datname='template_gis'; - - # exit from postgres - \q - - -How to create a Postgis-enabled database using the template -=========================================================== - -Type as root: - - # Become a postgresql superuser (or another superuser if there is) - su - postgres - - # Create the user (allowed to log in and with password, wich must - # beo wner of new db) skip if you still have your user - createuser -l -W - - # Shall the new role be a superuser? (y/n) n - # Shall the new role be allowed to create databases? (y/n) n - # Shall the new role be allowed to create more new roles? (y/n) n - # Password: - - # create database (from template_gis) ownered by user - createdb --o - T template_gis - - # login in new database (still as superuser postgres) - psql - - # grant privilege on standard ogc tables to user - grant all on geometry_columns to ; - grant select on spatial_ref_sys to ; - - # exit from postgres - \q - - # log out from unix user postgres and from root. As normal user, enter - # in your new db: - psql -h -U -d - - # you are in your new geodb - # have a look of tables - \dt +postgis + This package contains the user-oriented PostGIS utilities for + loading data into and pulling data out of a PostGIS-enabled + PostgreSQL database. These utilities are: pgsql2shp, shp2pgsql, + shp2pgsql-gui, and raster2pgsql. This package can be installed + independent of the extension and can well be used on client + machines. - # have a look of functions - \df - # have a look of spatial_ref_sys - select * from spatial_ref_sys; +libpostgis-java + This package contains the Java library for using JDBC with a PostGIS- + enabled PostgreSQL database. Upgrading existing spatial databases @@ -192,58 +66,30 @@ --- SOFT UPGRADE --- -Soft upgrade consists of sourcing the postgis_upgrade.sql -script in your spatial database: +Nowadays, soft upgrades are trivially handled by the Postgres +extension mechanism. For the manual procedure for Postgres versions +before 9.1, please refer to the PostGIS documentation. Using +extensions, you simply need to run the following commands per database +to upgrade to a new version of the extensions: - psql -f postgis_upgrade.sql -d your_spatial_database + ALTER EXTENSION postgis UPDATE TO "2.2.2"; + ALTER EXTENSION postgis_topology UPDATE TO "2.2.2"; -If a soft upgrade is not possible the script will abort and -you will be warned about HARD UPGRADE being required, -so do not hesitate to try a soft upgrade first. +If a soft upgrade is not possible the SQL command should emit an error +and you need to perform a HARD UPGRADE, instead. --- HARD UPGRADE --- -Hard upgrade is a PostgreSQL dump/restore procedure combined -with a filter to selectively update PostGIS functions and -objects to point to a new library version. - Hard upgrades are required when object definitions have changed, aggregates have changed or been added, and when the underlying -PostgreSQL database itself has undergone a major update. - -For this purpose, PostGIS provides a utility script to restore a dump -in "custom" format. The hard upgrade procedure is as follows: +PostgreSQL database itself has undergone a major update. The +procedure basically consists of a PostgreSQL dump/restore, but the +extension needs a bit of extra care, depending on what PostGIS version +you are upgrading from. Please refer to the PostGIS documentation. + +All of the required SQL files mentioned in the documentation should be +provided by the postgresql-M.N-postgis-scripts package and can be +found in the following directory after its installation (replace M.N +with the appropriate Postgres version used): - # Create a "custom-format" dump of the database you want - # to upgrade (let's call it "olddb") - $ pg_dump -Fc olddb olddb.dump - - # Restore the dump while upgrading postgis into - # a new database. - # Note: The new database does NOT have to exist. - # Let's call it "newdb" - $ sh utils/postgis_restore.pl postgis.sql newdb olddb.dump > restore.log - - # Check that all restored dump objects really had to be - # restored from dump and do not conflict with the - # ones defined in postgis.sql - $ grep ^KEEPING restore.log | less - - # If upgrading from PostgreSQL < 8.0 to >= 8.0 you will want to - # drop the attrelid, varattnum and stats columns in the geometry_columns - # table, which are no-more needed. Keeping them won't hurt. - # !!! DROPPING THEM WHEN REALLY NEEDED WILL DO HARM !!!! - $ psql newdb -c "ALTER TABLE geometry_columns DROP attrelid" - $ psql newdb -c "ALTER TABLE geometry_columns DROP varattnum" - $ psql newdb -c "ALTER TABLE geometry_columns DROP stats" - - # The spatial_ref_sys table is restored from the dump, to - # ensure your custom additions are kept, but the distributed - # one might contain modification so you should backup your - # entries, drop the table and source the new one. - # If you did make additions we assume you know how to backup them before - # upgrading the table. Replace it with the new like this: - $ psql newdb - newdb=> DELETE FROM spatial_ref_sys; - DROP - newdb=> \i spatial_ref_sys.sql + /usr/share/postgresql/M.N diff -Nru postgis-2.1.1/debian/rules postgis-2.1.2+dfsg/debian/rules --- postgis-2.1.1/debian/rules 2014-01-23 16:26:35.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/rules 2014-04-07 14:35:56.000000000 +0000 @@ -211,6 +211,7 @@ rm -f postgis-check-env.tmp dh_autotools-dev_restoreconfig + mh_clean dh_clean install: install-indep install-arch @@ -220,17 +221,17 @@ dh_prep -i dh_installdirs -i -# Install extensions and utils for the most recent Postgres version - $(MAKE) -C extensions install DESTDIR=$(CURDIR)/debian/tmp - $(MAKE) -C utils install DESTDIR=$(CURDIR)/debian/tmp +# Install the most recent Postgres version. Note that we used to +# install only utils and extensions. However, there are sql scripts +# in postgis, raster and topology as well, which need to be +# installed for the -scripts package(s). + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp -# Install extensions for the older Postgres versions +# Install all older Postgres versions. (set -e; \ for PGVER in $(OTHER_POSTGRES_VERSIONS); do \ $(MAKE) -C $(CURDIR)/debian/build-$$PGVER \ install DESTDIR=$(CURDIR)/debian/tmp; \ - $(MAKE) -C $(CURDIR)/debian/build-$$PGVER/extensions \ - install DESTDIR=$(CURDIR)/debian/tmp; \ done) # Compile and install docs @@ -245,6 +246,17 @@ ln -sf postgis-jdbc-$(POSTGIS_VERSION).jar \ $(CURDIR)/debian/libpostgis-java/usr/share/java/postgis.jar +# De-duplicate upgrade scripts - using hard-links for exactly one +# directory (so we don't generate cross-directory hard ones). + (set -e; \ + for PGVER in $(OTHER_POSTGRES_VERSIONS) $(NEWEST_POSTGRES_VERSION); do \ + rdfind -makeresultsfile false -makehardlinks true \ + $(CURDIR)/debian/postgresql-$$PGVER-postgis-scripts/usr/share/postgresql/$$PGVER/extension; \ + done) + + mh_installjar -v -plibpostgis-java -l java/jdbc/pom.xml java/jdbc/target/postgis-jdbc-$(POSTGIS_VERSION).jar + mh_installpoms -v -plibpostgis-java + install-arch: build-arch dh_testdir dh_testroot @@ -298,7 +310,7 @@ check: build-arch-stamp # Run unit tests (against the newest Postgres version only, for # now). - echo "LD_PRELOAD = '$(CURDIR)/liblwgeom/.libs/liblwgeom-2.1.1.so'" \ + echo "LD_PRELOAD = '$(CURDIR)/liblwgeom/.libs/liblwgeom-$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).so'" \ > $(CURDIR)/postgis-check-env.tmp (set -e; \ test -z '$(CHECK)' || \ @@ -327,7 +339,7 @@ dh_strip dh_compress dh_fixperms - dh_makeshlibs -Xusr/lib/postgis + dh_makeshlibs -Xusr/lib/postgis -- -v$(POSTGIS_VERSION) dh_installdeb dh_shlibdeps dh_gencontrol @@ -343,4 +355,8 @@ $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common binary: binary-arch binary-indep + +get-orig-source: + . debian/get-orig-source + .PHONY: build clean binary-indep binary-arch binary install install-indep install-arch check debian/control diff -Nru postgis-2.1.1/debian/source/options postgis-2.1.2+dfsg/debian/source/options --- postgis-2.1.1/debian/source/options 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/source/options 2014-04-05 19:33:47.000000000 +0000 @@ -1,2 +1,2 @@ # Ignore changes on auto-updated files -extend-diff-ignore = "(^|/)(doc/html/postgis\.html|doc/Makefile|doc/Makefile.comments|doc/html/image_src/Makefile|doc/html/images/.*\.png|libtool|postgis/sqldefines.h|config\.log|topology/test/load_topology-4326.sql|topology/test/load_topology.sql|topology/test/topo_predicates.sql)$" +extend-diff-ignore = "(^|/)(doc/html/postgis\.html|doc/Makefile|doc/Makefile\.comments|doc/html/image_src/Makefile|doc/html/images/.*\.png|extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder.*\.sql\.in|libtool|postgis/sfcgal\.sql|postgis/sqldefines\.h|config\.log|topology/test/load_topology-4326\.sql|topology/test/load_topology\.sql|topology/test/regress/topogeo_addlinestring_expected|topology/test/Makefile|topology/test/topo_predicates\.sql)$" diff -Nru postgis-2.1.1/debian/watch postgis-2.1.2+dfsg/debian/watch --- postgis-2.1.1/debian/watch 2013-12-12 19:53:45.000000000 +0000 +++ postgis-2.1.2+dfsg/debian/watch 2014-04-05 19:33:47.000000000 +0000 @@ -1,6 +1,5 @@ version=3 - -opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)\d*)$/$1~$2/ \ - http://download.osgeo.org/postgis/source/ \ - (?:.*/|)postgis[\-\._]?([\d\.]+(?:(?:RC|rc|pre|dev|beta|alpha|b|a)\d+)?)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz) - +opts=dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$//,uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)\d*)$/$1~$2/ \ +http://download.osgeo.org/postgis/source/ \ +(?:.*/|)postgis[\-\._]?([\d\.]+(?:(?:RC|rc|pre|dev|beta|alpha|b|a)\d+)?)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz) \ +debian get-orig-source diff -Nru postgis-2.1.1/doc/extras_topology.xml postgis-2.1.2+dfsg/doc/extras_topology.xml --- postgis-2.1.1/doc/extras_topology.xml 2013-03-21 16:15:51.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/extras_topology.xml 2014-02-04 08:36:02.000000000 +0000 @@ -162,7 +162,10 @@ See Also - + + , + + @@ -1305,7 +1308,7 @@ - text ST_ModEdgeSplit + integer ST_ModEdgeSplit varchar atopology integer anedge geometry apoint @@ -1320,6 +1323,7 @@ Split an edge by creating a new node along an existing edge, modifying the original edge and adding a new edge. Updates all existing joined edges and relationships accordingly. +Returns the identifier of the newly added node. @@ -1340,8 +1344,8 @@ -- Split the edge -- -SELECT topology.ST_ModEdgeSplit('ma_topo', 3, ST_SetSRID(ST_Point(227594,893910),26986) ) As result; - result +SELECT topology.ST_ModEdgeSplit('ma_topo', 3, ST_SetSRID(ST_Point(227594,893910),26986) ) As node_id; + node_id ------------------------- 7 @@ -3206,4 +3210,110 @@ + + + + This section lists the Topology functions used to check relationships between topogeometries and topology primitives + + + Topology Spatial Relationships + + + Equals + + Returns true if two topogeometries are composed of the same topology primitives. + + + + + + boolean Equals + topogeometry tg1 + topogeometry tg2 + + + + + + Description + + Returns true if two topogeometries are composed of the same topology primitives: faces, edges, nodes. + + + + This function not supported for topogeometries that are geometry collections. It also can not compare topogeometries from different topologies. + + + Availability: 1.? + + + + &Z_support; + + + + + Examples + + + + + + + See Also + + , + + + + + + Intersects + + Returns true if two topogeometries are composed of the same topology primitives. + + + + + + boolean Equals + topogeometry tg1 + topogeometry tg2 + + + + + + Description + + Returns true if two topogeometries share primitives or primitives intersect + + + + This function not supported for topogeometries that are geometry collections. It also can not compare topogeometries from different topologies. + Also not currently supported for hierarchichal topogeometries (topogeometries composed of other topogeometries). + + + Availability: 1.? + + + + &Z_support; + + + + + Examples + + + + + + + See Also + + + + + diff -Nru postgis-2.1.1/doc/faq.xml postgis-2.1.2+dfsg/doc/faq.xml --- postgis-2.1.1/doc/faq.xml 2013-04-10 20:06:50.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/faq.xml 2014-02-04 05:56:18.000000000 +0000 @@ -97,14 +97,9 @@ - You can store point, line, polygon, multipoint, multiline, - multipolygon, and geometrycollections. In PostGIS 2.0 and above you can also store TINS and Polyhedral Surfaces in the basic geometry type. - These are specified in the Open - GIS Well Known Text Format (with XYZ,XYM,XYZM extensions). There are three data types currently supported. - The standard OGC geometry data type which uses a planar coordinate system for measurement, the - geography data type which uses a geodetic coordinate system (not OGC, but you'll find a similar type in Microsoft SQL Server 2008+). Only WGS 84 long lat (SRID:4326) is supported - by the geography data type. The newest family member of the PostGIS spatial type family is raster for storing and analyzing raster data. Raster has its very own FAQ. Refer to - and for more details. + You can store Points, Linestrings, Polygons, CircularStrings, CompoundCurves, CurvePolygons, Triangles, PolyhedralSurfaces, TINs, Rasters, and collections of all the above. The most commonly used types used are Points, Linestrings and Polygons, and their collections. + Points, Linestrings and Polygons can be stored either as "geometry" or "geography". "Geometry" are cartesian representations of features in a 2D space. The shortest distance between two "geometry" points is a straight line. "Geography" are representations of objects on a spherical surface. The shortest distance between two "geography" points is a great circle. + The "raster" type has a distinct set of functions for manipulation and analysis. Refer to and for more details. diff -Nru postgis-2.1.1/doc/html/image_src/Makefile postgis-2.1.2+dfsg/doc/html/image_src/Makefile --- postgis-2.1.1/doc/html/image_src/Makefile 2013-11-08 19:46:16.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/html/image_src/Makefile 2014-03-29 05:39:49.000000000 +0000 @@ -11,9 +11,9 @@ # ********************************************************************** CC=gcc -CFLAGS=-g -O2 -Wall -Wmissing-prototypes +CFLAGS=-g -O2 -Wall -Wmissing-prototypes -I/usr/local/include -CUNIT_LDFLAGS= -lcunit +CUNIT_LDFLAGS= CUNIT_CPPFLAGS= -I../../../liblwgeom IMAGES= \ diff -Nru postgis-2.1.1/doc/Makefile postgis-2.1.2+dfsg/doc/Makefile --- postgis-2.1.1/doc/Makefile 2013-11-08 19:46:16.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/Makefile 2014-03-29 05:39:49.000000000 +0000 @@ -25,13 +25,13 @@ POSTGIS_MAJOR_VERSION=2 POSTGIS_MINOR_VERSION=1 -POSTGIS_MICRO_VERSION=1 +POSTGIS_MICRO_VERSION=2 -INSTALL=/opt/local/bin/ginstall -c +INSTALL=/usr/bin/install -c INSTALL_DATA=${INSTALL} -m 644 XSLTPROC=/opt/local/bin/xsltproc -XSLBASE=/opt/local/share/xsl/docbook-xsl +XSLBASE= XMLLINT=/opt/local/bin/xmllint PERL=/opt/local/bin/perl @@ -63,7 +63,7 @@ CHUNK_HTML_DOCBOOK_XSL=$(XSLBASE)/html/chunk.xsl # DBLatex's dblatex script for PDF generation from DocBook -DBLATEX=/opt/local/bin/dblatex +DBLATEX= # Imagemagick's convert utility program for generated images used in the documentation IMAGEMAGICK=/opt/local/bin/convert @@ -78,9 +78,9 @@ DBTOEPUB=dbtoepub # Directories for postgresql subdirectories -PGSQL_DOCDIR=/usr/local/pgsql/9.2/share/doc -PGSQL_MANDIR=/usr/local/pgsql/9.2/share/man -PGSQL_SHAREDIR=/usr/local/pgsql/9.2/share +PGSQL_DOCDIR=/opt/pgsql/9.2/share/doc +PGSQL_MANDIR=/opt/pgsql/9.2/share/man +PGSQL_SHAREDIR=/opt/pgsql/9.2/share # If XSLTPROC or XSLBASE were not found during configure, we cannot # build the documentation @@ -318,13 +318,17 @@ rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/shp2pgsql.1 rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/pgsql2shp.1 -docs-install: html/postgis.html - mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis - $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html +docs-install: html/postgis.html html/style.css + mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images + $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ + $(INSTALL_DATA) html/style.css $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ + $(INSTALL_DATA) html/images/* $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images/ $(INSTALL_DATA) ../README.postgis $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis docs-uninstall: rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html + rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/style.css + rm -rf $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis install: comments-install diff -Nru postgis-2.1.1/doc/Makefile.comments postgis-2.1.2+dfsg/doc/Makefile.comments --- postgis-2.1.1/doc/Makefile.comments 2013-11-08 19:46:16.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/Makefile.comments 2014-03-29 05:39:49.000000000 +0000 @@ -21,8 +21,8 @@ DATA_built=postgis_comments.sql raster_comments.sql topology_comments.sql # PGXS information -PG_CONFIG = /usr/local/pgsql/9.2/bin/pg_config -PGXS := /usr/local/pgsql/9.2/lib/pgxs/src/makefiles/pgxs.mk +PG_CONFIG = /opt/pgsql/9.2/bin/pg_config +PGXS := /opt/pgsql/9.2/lib/pgxs/src/makefiles/pgxs.mk include $(PGXS) # PGXS override feature. The ability to allow PostGIS to install itself diff -Nru postgis-2.1.1/doc/Makefile.in postgis-2.1.2+dfsg/doc/Makefile.in --- postgis-2.1.1/doc/Makefile.in 2013-05-24 06:29:17.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/Makefile.in 2014-03-13 21:11:05.000000000 +0000 @@ -318,13 +318,17 @@ rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/shp2pgsql.1 rm -f $(DESTDIR)$(PGSQL_MANDIR)/man1/pgsql2shp.1 -docs-install: html/postgis.html - mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis - $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html +docs-install: html/postgis.html html/style.css + mkdir -p $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images + $(INSTALL_DATA) html/postgis.html $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ + $(INSTALL_DATA) html/style.css $(DESTDIR)$(PGSQL_DOCDIR)/postgis/ + $(INSTALL_DATA) html/images/* $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images/ $(INSTALL_DATA) ../README.postgis $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis docs-uninstall: rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/postgis.html + rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/style.css + rm -rf $(DESTDIR)$(PGSQL_DOCDIR)/postgis/images rm -f $(DESTDIR)$(PGSQL_DOCDIR)/postgis/README.postgis install: comments-install diff -Nru postgis-2.1.1/doc/postgis_comments.sql postgis-2.1.2+dfsg/doc/postgis_comments.sql --- postgis-2.1.1/doc/postgis_comments.sql 2013-11-08 19:46:18.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/postgis_comments.sql 2014-03-29 05:39:55.000000000 +0000 @@ -69,9 +69,9 @@ COMMENT ON FUNCTION ST_GeogFromWKB(bytea ) IS 'args: geom - Creates a geography instance from a Well-Known Binary geometry representation (WKB) or extended Well Known Binary (EWKB).'; -COMMENT ON FUNCTION ST_GeomCollFromText(text , integer ) IS 'args: WKT, srid - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_GeomCollFromText(text , integer ) IS 'args: WKT, srid - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to 0.'; -COMMENT ON FUNCTION ST_GeomCollFromText(text ) IS 'args: WKT - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_GeomCollFromText(text ) IS 'args: WKT - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to 0.'; COMMENT ON FUNCTION ST_GeomFromEWKB(bytea ) IS 'args: EWKB - Return a specified ST_Geometry value from Extended Well-Known Binary representation (EWKB).'; @@ -105,9 +105,9 @@ COMMENT ON FUNCTION ST_LineFromMultiPoint(geometry ) IS 'args: aMultiPoint - Creates a LineString from a MultiPoint geometry.'; -COMMENT ON FUNCTION ST_LineFromText(text ) IS 'args: WKT - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to -1.'; +COMMENT ON FUNCTION ST_LineFromText(text ) IS 'args: WKT - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to 0.'; -COMMENT ON FUNCTION ST_LineFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to -1.'; +COMMENT ON FUNCTION ST_LineFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to 0.'; COMMENT ON FUNCTION ST_LineFromWKB(bytea ) IS 'args: WKB - Makes a LINESTRING from WKB with the given SRID'; @@ -145,13 +145,13 @@ COMMENT ON FUNCTION ST_MLineFromText(text ) IS 'args: WKT - Return a specified ST_MultiLineString value from WKT representation.'; -COMMENT ON FUNCTION ST_MPointFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_MPointFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; -COMMENT ON FUNCTION ST_MPointFromText(text ) IS 'args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_MPointFromText(text ) IS 'args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; -COMMENT ON FUNCTION ST_MPolyFromText(text , integer ) IS 'args: WKT, srid - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_MPolyFromText(text , integer ) IS 'args: WKT, srid - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; -COMMENT ON FUNCTION ST_MPolyFromText(text ) IS 'args: WKT - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_MPolyFromText(text ) IS 'args: WKT - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; COMMENT ON FUNCTION ST_Point(float , float ) IS 'args: x_lon, y_lat - Returns an ST_Point with the given coordinate values. OGC alias for ST_MakePoint.'; @@ -167,9 +167,9 @@ COMMENT ON FUNCTION ST_Polygon(geometry , integer ) IS 'args: aLineString, srid - Returns a polygon built from the specified linestring and SRID.'; -COMMENT ON FUNCTION ST_PolygonFromText(text ) IS 'args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_PolygonFromText(text ) IS 'args: WKT - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; -COMMENT ON FUNCTION ST_PolygonFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.'; +COMMENT ON FUNCTION ST_PolygonFromText(text , integer ) IS 'args: WKT, srid - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to 0.'; COMMENT ON FUNCTION ST_WKBToSQL(bytea ) IS 'args: WKB - Return a specified ST_Geometry value from Well-Known Binary representation (WKB). This is an alias name for ST_GeomFromWKB that takes no srid'; diff -Nru postgis-2.1.1/doc/postgis.xml postgis-2.1.2+dfsg/doc/postgis.xml --- postgis-2.1.1/doc/postgis.xml 2013-11-08 19:44:24.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/postgis.xml 2014-03-29 05:36:01.000000000 +0000 @@ -3,12 +3,12 @@ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - + - + diff -Nru postgis-2.1.1/doc/reference_constructor.xml postgis-2.1.2+dfsg/doc/reference_constructor.xml --- postgis-2.1.1/doc/reference_constructor.xml 2013-05-05 22:35:47.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/reference_constructor.xml 2014-02-14 03:23:20.000000000 +0000 @@ -274,7 +274,7 @@ ST_GeomCollFromText Makes a collection Geometry from collection WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. @@ -297,7 +297,7 @@ Description Makes a collection Geometry from the Well-Known-Text (WKT) representation with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite @@ -942,7 +942,7 @@ geometry type. This function plays the role of the Geometry Factory in SQL. This is an alternate name for ST_WKBToSQL. - If SRID is not specified, it defaults to -1 (Unknown). + If SRID is not specified, it defaults to 0 (Unknown). &sfs_compliant; s3.2.7.2 - the optional SRID is from the conformance suite &sqlmm_compliant; SQL-MM 3: 5.1.41 &curve_support; @@ -1030,7 +1030,7 @@ ST_LineFromText Makes a Geometry from WKT representation with the given SRID. If SRID is - not given, it defaults to -1. + not given, it defaults to 0. @@ -1052,7 +1052,7 @@ Description Makes a Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. If WKT passed in is not a LINESTRING, then null is returned. + not give, it defaults to 0. If WKT passed in is not a LINESTRING, then null is returned. OGC SPEC 3.2.6.2 - option SRID is from the conformance @@ -1120,7 +1120,7 @@ LINESTRING geometry. This function plays the role of the Geometry Factory in SQL. - If an SRID is not specified, it defaults to -1. NULL is + If an SRID is not specified, it defaults to 0. NULL is returned if the input bytea does not represent a LINESTRING. @@ -1193,7 +1193,7 @@ LINESTRING geometry. This function plays the role of the Geometry Factory in SQL. - If an SRID is not specified, it defaults to -1. NULL is + If an SRID is not specified, it defaults to 0. NULL is returned if the input bytea does not represent a LINESTRING geometry. This an alias for . @@ -1785,7 +1785,7 @@ Description Makes a Geometry from Well-Known-Text (WKT) with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite @@ -1823,7 +1823,7 @@ ST_MPointFromText Makes a Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. @@ -1846,7 +1846,7 @@ Description Makes a Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite @@ -1885,7 +1885,7 @@ ST_MPolyFromText Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. @@ -1908,7 +1908,7 @@ Description Makes a MultiPolygon from WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. OGC SPEC 3.2.6.2 - option SRID is from the conformance suite @@ -2077,7 +2077,7 @@ Description Constructs a PostGIS ST_Geometry point object from the OGC Well-Known text representation. If SRID is - not give, it defaults to unknown (currently -1). If geometry is not a WKT point representation, returns null. + not give, it defaults to unknown (currently 0). If geometry is not a WKT point representation, returns null. If completely invalid WKT, then throws an error. @@ -2141,7 +2141,7 @@ POINT geometry. This function plays the role of the Geometry Factory in SQL. - If an SRID is not specified, it defaults to -1. NULL is + If an SRID is not specified, it defaults to 0. NULL is returned if the input bytea does not represent a POINT geometry. &sfs_compliant; s3.2.7.2 @@ -2250,7 +2250,7 @@ ST_PolygonFromText Makes a Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. + not give, it defaults to 0. @@ -2271,7 +2271,7 @@ Description Makes a Geometry from WKT with the given SRID. If SRID is - not give, it defaults to -1. Returns null if WKT is not a polygon. + not give, it defaults to 0. Returns null if WKT is not a polygon. OGC SPEC 3.2.6.2 - option SRID is from the conformance diff -Nru postgis-2.1.1/doc/reference_measure.xml postgis-2.1.2+dfsg/doc/reference_measure.xml --- postgis-2.1.1/doc/reference_measure.xml 2013-07-02 21:51:55.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/reference_measure.xml 2014-02-20 05:46:00.000000000 +0000 @@ -831,7 +831,7 @@ Computes the geometric center of a geometry, or equivalently, the center of mass of the geometry as a POINT. For [MULTI]POINTs, this is computed - as the arithmetric mean of the input coordinates. For + as the arithmetic mean of the input coordinates. For [MULTI]LINESTRINGs, this is computed as the weighted length of each line segment. For [MULTI]POLYGONs, "weight" is diff -Nru postgis-2.1.1/doc/release_notes.xml postgis-2.1.2+dfsg/doc/release_notes.xml --- postgis-2.1.1/doc/release_notes.xml 2013-11-05 18:25:10.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/release_notes.xml 2014-03-28 19:56:24.000000000 +0000 @@ -3,6 +3,42 @@ Appendix Release Notes + Release 2.1.2 + Release date: 2014/03/31 + This is a bug fix release, addressing issues that have been filed since the 2.1.1 release. + + Bug Fixes + #2666, Error out at configure time if no SQL preprocessor can be found + #2534, st_distance returning incorrect results for large geographies + #2539, Check for json-c/json.h presence/usability before json/json.h + #2543, invalid join selectivity error from simple query + #2546, GeoJSON with string coordinates parses incorrectly + #2547, Fix ST_Simplify(TopoGeometry) for hierarchical topogeoms + #2552, Fix NULL raster handling in ST_AsPNG, ST_AsTIFF and + ST_AsJPEG + #2555, Fix parsing issue of range arguments of ST_Reclass + #2556, geography ST_Intersects results depending on insert order + #2580, Do not allow installing postgis twice in the same database + #2589, Remove use of unnecessary void pointers + #2607, Cannot open more than 1024 out-db files in one process + #2610, Ensure face splitting algorithm uses the edge index + #2615, EstimatedExtent (and hence, underlying stats) gathering wrong bbox + #2619, Empty rings array in GeoJSON polygon causes crash + #2634, regression in sphere distance code + #2638, Geography distance on M geometries sometimes wrong + #2648, #2653, Fix topology functions when "topology" is not in search_path + #2654, Drop deprecated calls from topology + #2655, Let users without topology privileges call postgis_full_version() + #2674, Fix missing operator = and hash_raster_ops opclass on raster + #2675, #2534, #2636, #2634, #2638, Geography distance issues with tree optimization + + + Enhancements + #2494, avoid memcopy in GiST index (hayamiz) + #2560, soft upgrade: avoid drop/recreate of aggregates that hadn't changed + + + Release 2.1.1 Release date: 2013/11/06 This is a bug fix release, addressing issues that have been filed since the 2.1.0 release. diff -Nru postgis-2.1.1/doc/topology_comments.sql postgis-2.1.2+dfsg/doc/topology_comments.sql --- postgis-2.1.1/doc/topology_comments.sql 2013-11-08 19:46:19.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/topology_comments.sql 2014-03-29 05:40:06.000000000 +0000 @@ -134,4 +134,8 @@ COMMENT ON FUNCTION topology.AsGML(topogeometry , text , integer , integer , regclass , text , int ) IS 'args: tg, nsprefix_in, precision, options, visitedTable, idprefix, gmlversion - Returns the GML representation of a topogeometry.'; COMMENT ON FUNCTION topology.AsTopoJSON(topogeometry , regclass ) IS 'args: tg, edgeMapTable - Returns the TopoJSON representation of a topogeometry.'; + +COMMENT ON FUNCTION topology.Equals(topogeometry , topogeometry ) IS 'args: tg1, tg2 - Returns true if two topogeometries are composed of the same topology primitives.'; + +COMMENT ON FUNCTION topology.Equals(topogeometry , topogeometry ) IS 'args: tg1, tg2 - Returns true if two topogeometries are composed of the same topology primitives.'; \ No newline at end of file diff -Nru postgis-2.1.1/doc/using_postgis_dataman.xml postgis-2.1.2+dfsg/doc/using_postgis_dataman.xml --- postgis-2.1.1/doc/using_postgis_dataman.xml 2013-09-06 22:52:12.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/using_postgis_dataman.xml 2014-03-09 23:16:50.000000000 +0000 @@ -5,21 +5,22 @@ GIS Objects - The GIS objects supported by PostGIS are a superset of the "Simple - Features" defined by the OpenGIS Consortium (OGC). As of version 0.9, - PostGIS supports all the objects and functions specified in the OGC - "Simple Features for SQL" specification. + The GIS objects supported by PostGIS are all the vector types defined + in the "Simple Features for SQL 1.2.1" standard defined by the OpenGIS Consortium (OGC), + and the ISO "SQL/MM Part 3: Spatial" document. In addition, PostGIS supports a raster + type (no standards exist to follow), and a topology model (following an early + draft ISO standard for topology that has not been published as yet). - PostGIS extends the standard with support for 3DZ,3DM and 4D - coordinates. + The OGC and ISO standards define 2D (x/y), 3D (x/y/z, x/y/m) and 4D (x/y/z/m) + variants of points, lines, polygons, curved features, polyhedra, and TINS. - OpenGIS WKB and WKT + Well-Known Binary (WKB) and Well-Known Text (WKT) Representations - The OpenGIS specification defines two standard ways of expressing - spatial objects: the Well-Known Text (WKT) form and the Well-Known - Binary (WKB) form. Both WKT and WKB include information about the type - of the object and the coordinates which form the object. + The OGC and ISO specifications define both text and binary + representations for geometry objects, WKT and WKB. Both representations + include information about the type + of the object and the coordinates that form the object. Examples of the text representations (WKT) of the spatial objects of the features are as follows: @@ -38,7 +39,7 @@ - MULTIPOINT(0 0,1 2) + MULTIPOINT((0 0),(1 2)) diff -Nru postgis-2.1.1/doc/using_raster_dataman.xml postgis-2.1.2+dfsg/doc/using_raster_dataman.xml --- postgis-2.1.1/doc/using_raster_dataman.xml 2013-08-02 01:30:11.000000000 +0000 +++ postgis-2.1.2+dfsg/doc/using_raster_dataman.xml 2014-02-14 03:30:33.000000000 +0000 @@ -728,8 +728,9 @@ Use PLPython to dump out images via SQL - This is a plpython stored function that creates a file in the server directory for each record. - //plpython postgresql stored proc. Requires you have plpython installed + This is a plpython stored function that creates a file in the server directory for each record. + plpython postgresql stored proc. Requires you have plpython installed. Should work fine with both plpythonu and plpython3u. + $@ -all: sql/$(EXTENSION)--$(EXTVERSION).sql sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql sql_minor_upgrade +all: sql/$(EXTENSION)--$(EXTVERSION).sql sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql sql_minor_upgrade sql_patch_upgrade sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql mkdir -p sql @@ -44,9 +44,9 @@ cp $< $@ #this is a cludge to allow upgrading from same SVN to same SVN -sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql: sql_bits/postgis_raster_upgrade_minor.sql +sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql: sql_bits/extension_upgrade_patch.sql cp $< $@ -sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql_bits/postgis_raster_upgrade_minor.sql +sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql_bits/extension_upgrade_patch.sql cp $< $@ #strip BEGIN/COMMIT since these are not allowed in extensions @@ -78,6 +78,14 @@ -e 's/DROP CAST\(.*\)/SELECT postgis_extension_drop_if_exists('\''$(EXTENSION)'\'', '\''DROP CAST \1'\'');DROP CAST \1/' \ $< > $@ +sql_bits/rtpostgis_upgrade_21_minor.sql: ../../raster/rt_pg/rtpostgis_upgrade_21_minor.sql + sed -e 's/BEGIN;//g' -e 's/COMMIT;//g' \ + -e 's/DROP FUNCTION _rename_raster_tables();/ALTER EXTENSION ${EXTENSION} DROP FUNCTION _rename_raster_tables();DROP FUNCTION _rename_raster_tables();/g' \ + -e 's/DROP FUNCTION _drop_st_samealignment();/ALTER EXTENSION ${EXTENSION} DROP FUNCTION _drop_st_samealignment();DROP FUNCTION _drop_st_samealignment();/g' \ + -e 's/DROP CAST\(.*\)/SELECT postgis_extension_drop_if_exists('\''$(EXTENSION)'\'', '\''DROP CAST \1'\'');DROP CAST \1/' \ + $< > $@ + + #don't drop casts just yet since we don't have provision to remove from extension yet #need to also drop temporary functions from extenions since it gets auto-added sql_bits/postgis_upgrade_20_21.sql: ../../postgis/postgis_upgrade_20_21.sql @@ -87,6 +95,13 @@ -e 's/DROP FUNCTION postgis_major_version_check();/ALTER EXTENSION ${EXTENSION} DROP FUNCTION postgis_major_version_check();DROP FUNCTION postgis_major_version_check();/g' \ $< > $@ +sql_bits/postgis_upgrade_21_minor.sql: ../../postgis/postgis_upgrade_21_minor.sql + sed -e 's/BEGIN;//g' -e 's/COMMIT;//g' \ + -e '/^\(DROP\|CREATE\) \(CAST\).*;/d' \ + -e '/^\(DROP\|CREATE\) \(CAST\)/,/\;/d' \ + -e 's/DROP FUNCTION postgis_major_version_check();/ALTER EXTENSION ${EXTENSION} DROP FUNCTION postgis_major_version_check();DROP FUNCTION postgis_major_version_check();/g' \ + $< > $@ + ../../doc/raster_comments.sql: $(MAKE) -C ../../doc comments @@ -94,10 +109,12 @@ sql_bits/raster_comments.sql: ../../doc/raster_comments.sql cp $< $@ -#postgis_raster_upgrade_minor.sql is the one that contains both postgis AND raster -#TODO: come up with a better name +#extension_upgrade_minor.sql is the one that contains both postgis AND raster #TODO: what about postgis_drop_after.sql ? where does it fit ?? -sql_bits/postgis_raster_upgrade_minor.sql: ../postgis_extension_helper.sql sql_bits/remove_from_extension.sql.in sql_bits/postgis_upgrade_20_21.sql sql_bits/rtpostgis_upgrade_20_21.sql ../../doc/raster_comments.sql ../../doc/postgis_comments.sql ../postgis_extension_helper_uninstall.sql +sql_bits/extension_upgrade_minor.sql: ../postgis_extension_helper.sql sql_bits/postgis_upgrade_20_21.sql sql_bits/rtpostgis_upgrade_20_21.sql ../../doc/raster_comments.sql ../../doc/postgis_comments.sql ../postgis_extension_helper_uninstall.sql + cat $^ > $@ + +sql_bits/extension_upgrade_patch.sql: ../postgis_extension_helper.sql sql_bits/postgis_upgrade_21_minor.sql sql_bits/rtpostgis_upgrade_21_minor.sql ../../doc/raster_comments.sql ../../doc/postgis_comments.sql ../postgis_extension_helper_uninstall.sql cat $^ > $@ # sql_bits/rtpostgis--unpackaged.sql: ../../raster/rt_pg/rtpostgis.sql @@ -139,8 +156,13 @@ sql/postgis--unpackaged--$(EXTVERSION).sql: sql_bits/postgis--unpackaged.sql.in -sql_minor_upgrade: sql_bits/postgis_raster_upgrade_minor.sql - for OLD_VERSION in $(UPGRADEABLE_VERSIONS); do \ +sql_minor_upgrade: sql_bits/extension_upgrade_minor.sql + for OLD_VERSION in $(UPGRADEABLE_VERSIONS_MINOR); do \ + cat $< > sql/$(EXTENSION)--$$OLD_VERSION--$(EXTVERSION).sql; \ + done + +sql_patch_upgrade: sql_bits/extension_upgrade_patch.sql + for OLD_VERSION in $(UPGRADEABLE_VERSIONS_PATCH); do \ cat $< > sql/$(EXTENSION)--$$OLD_VERSION--$(EXTVERSION).sql; \ done diff -Nru postgis-2.1.1/extensions/postgis/META.json postgis-2.1.2+dfsg/extensions/postgis/META.json --- postgis-2.1.1/extensions/postgis/META.json 2012-01-09 20:17:59.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis/META.json 2014-03-03 03:01:35.000000000 +0000 @@ -39,7 +39,7 @@ }, "repository": { "url": "svn://svn.osgeo.org/postgis/", - "web": "http://www.postgis.org", + "web": "http://postgis.net", "type": "svn" } }, diff -Nru postgis-2.1.1/extensions/postgis/postgis.control postgis-2.1.2+dfsg/extensions/postgis/postgis.control --- postgis-2.1.1/extensions/postgis/postgis.control 2013-11-08 19:46:15.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis/postgis.control 2014-03-29 05:39:48.000000000 +0000 @@ -1,5 +1,5 @@ # postgis extension comment = 'PostGIS geometry, geography, and raster spatial types and functions' -default_version = '2.1.1' +default_version = '2.1.2' module_pathname = '$libdir/postgis-2.1' relocatable = true diff -Nru postgis-2.1.1/extensions/postgis/sql_bits/postgis--unpackaged.sql.in postgis-2.1.2+dfsg/extensions/postgis/sql_bits/postgis--unpackaged.sql.in --- postgis-2.1.1/extensions/postgis/sql_bits/postgis--unpackaged.sql.in 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis/sql_bits/postgis--unpackaged.sql.in 2014-03-29 05:31:01.000000000 +0000 @@ -1170,3 +1170,4 @@ ALTER EXTENSION postgis ADD view geometry_columns; ALTER EXTENSION postgis ADD view raster_columns; ALTER EXTENSION postgis ADD view raster_overviews; + diff -Nru postgis-2.1.1/extensions/postgis/sql_bits/remove_from_extension.sql.in postgis-2.1.2+dfsg/extensions/postgis/sql_bits/remove_from_extension.sql.in --- postgis-2.1.1/extensions/postgis/sql_bits/remove_from_extension.sql.in 2012-08-06 16:21:04.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis/sql_bits/remove_from_extension.sql.in 2014-03-03 03:01:35.000000000 +0000 @@ -1,9 +1,9 @@ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- $Id: remove_from_extension.sql.in 10168 2012-08-06 16:21:04Z robe $ +-- $Id: remove_from_extension.sql.in 12288 2014-03-03 03:01:35Z robe $ ---- -- PostGIS - Spatial Types for PostgreSQL --- http://www.postgis.org +-- http://postgis.net -- -- Copyright (C) 2011 Regina Obe -- diff -Nru postgis-2.1.1/extensions/postgis_extension_helper.sql postgis-2.1.2+dfsg/extensions/postgis_extension_helper.sql --- postgis-2.1.1/extensions/postgis_extension_helper.sql 2012-12-26 13:44:51.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_extension_helper.sql 2014-03-03 03:01:35.000000000 +0000 @@ -1,9 +1,9 @@ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- $Id: postgis_extension_helper.sql 10934 2012-12-26 13:44:51Z robe $ +-- $Id: postgis_extension_helper.sql 12288 2014-03-03 03:01:35Z robe $ ---- -- PostGIS - Spatial Types for PostgreSQL --- http://www.postgis.org +-- http://postgis.net -- -- Copyright (C) 2011 Regina Obe -- Copyright (C) 2005 Refractions Research Inc. diff -Nru postgis-2.1.1/extensions/postgis_extension_helper_uninstall.sql postgis-2.1.2+dfsg/extensions/postgis_extension_helper_uninstall.sql --- postgis-2.1.1/extensions/postgis_extension_helper_uninstall.sql 2012-12-26 13:44:51.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_extension_helper_uninstall.sql 2014-03-03 03:01:35.000000000 +0000 @@ -1,9 +1,9 @@ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- $Id: postgis_extension_helper_uninstall.sql 10934 2012-12-26 13:44:51Z robe $ +-- $Id: postgis_extension_helper_uninstall.sql 12288 2014-03-03 03:01:35Z robe $ ---- -- PostGIS - Spatial Types for PostgreSQL --- http://www.postgis.org +-- http://postgis.net -- -- Copyright (C) 2011 Regina Obe -- diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/doc/postgis_tiger_geocoder.md postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/doc/postgis_tiger_geocoder.md --- postgis-2.1.1/extensions/postgis_tiger_geocoder/doc/postgis_tiger_geocoder.md 2012-10-09 05:06:47.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/doc/postgis_tiger_geocoder.md 2014-03-03 03:01:35.000000000 +0000 @@ -1,6 +1,5 @@ -PostGIS 2.1.0 +PostGIS ============ Extensive documentation can be found at. -HTML: http://www.postgis.org/documentation/manual-svn/ -PDF: http://www.postgis.org/download/postgis-2.1.0SVN.pdf +http://postgis.net/documentation diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/Makefile.in postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/Makefile.in --- postgis-2.1.1/extensions/postgis_tiger_geocoder/Makefile.in 2013-09-23 04:36:25.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/Makefile.in 2013-12-19 17:29:19.000000000 +0000 @@ -30,15 +30,19 @@ all: sql/$(EXTENSION)--$(EXTVERSION).sql sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql sql_minor_upgrade sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql + mkdir -p sql cp $< $@ sql/$(EXTENSION).sql: sql_bits/tiger_geocoder.sql sql_bits/mark_editable_objects.sql.in sql_bits/tiger_geocoder_comments.sql + mkdir -p sql cat $^ > $@ #this is a cludge to allow upgrading from same SVN to same SVN sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql: ../postgis_extension_helper.sql sql_bits/remove_from_extension.sql.in sql/tiger_geocoder_upgrade_minor.sql sql_bits/mark_editable_objects.sql.in sql_bits/tiger_geocoder_comments.sql ../postgis_extension_helper_uninstall.sql + mkdir -p sql cat $^ > $@ sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql + mkdir -p sql cp $< $@ #strip BEGIN/COMMIT since these are not allowed in extensions @@ -144,6 +148,7 @@ #hardcode for now using #the extensions/make_unpackaged.sql script form an install sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql: sql_bits/tiger_geocoder--unpackaged.sql.in + mkdir -p sql cp $< $@ #upgrade script should have everything but table, schema, type creation/alter @@ -155,6 +160,7 @@ #they can be dropped but we need to remove #them from the extension first sql/tiger_geocoder_upgrade_minor.sql: sql_bits/tiger_geocoder_minor.sql.in + mkdir -p sql sed -e '/^\(CREATE\|ALTER\) \(CAST\|TYPE\|TABLE\|SCHEMA\|DOMAIN\|TRIGGER\).*;/d' \ -e '/^\(CREATE\|ALTER\) \(CAST\|TYPE\|TABLE\|SCHEMA\|DOMAIN\|TRIGGER\)/,/\;/d' \ -e 's/BEGIN;//g' -e 's/COMMIT;//g' \ diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/META.json postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/META.json --- postgis-2.1.1/extensions/postgis_tiger_geocoder/META.json 2012-10-09 05:06:47.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/META.json 2014-03-03 03:01:35.000000000 +0000 @@ -30,7 +30,7 @@ }, "repository": { "url": "svn://svn.osgeo.org/postgis/", - "web": "http://www.postgis.org", + "web": "http://postgis.net", "type": "svn" } }, diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control --- postgis-2.1.1/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control 2013-11-08 19:46:15.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control 2014-03-29 05:39:49.000000000 +0000 @@ -1,6 +1,6 @@ # postgis tiger geocoder extension comment = 'PostGIS tiger geocoder and reverse geocoder' -default_version = '2.1.1' +default_version = '2.1.2' relocatable = false schema = tiger requires = 'postgis,fuzzystrmatch' diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/sql_bits/remove_from_extension.sql.in postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/sql_bits/remove_from_extension.sql.in --- postgis-2.1.1/extensions/postgis_tiger_geocoder/sql_bits/remove_from_extension.sql.in 2012-10-10 21:45:23.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/sql_bits/remove_from_extension.sql.in 2014-03-03 03:01:35.000000000 +0000 @@ -3,7 +3,7 @@ -- $Id: remove_from_extension.sql.in 9324 2012-02-27 22:08:12Z pramsey $ ---- -- PostGIS - Spatial Types for PostgreSQL --- http://www.postgis.org +-- http://postgis.net -- -- Copyright (C) 2011 Regina Obe -- diff -Nru postgis-2.1.1/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in --- postgis-2.1.1/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in 2014-03-29 05:31:01.000000000 +0000 @@ -100,3 +100,4 @@ ALTER EXTENSION postgis_tiger_geocoder ADD table zip_state; ALTER EXTENSION postgis_tiger_geocoder ADD table zip_state_loc; ALTER EXTENSION postgis_tiger_geocoder ADD type norm_addy; + diff -Nru postgis-2.1.1/extensions/postgis_topology/doc/postgis.md postgis-2.1.2+dfsg/extensions/postgis_topology/doc/postgis.md --- postgis-2.1.1/extensions/postgis_topology/doc/postgis.md 2012-01-09 20:17:59.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_topology/doc/postgis.md 2014-03-03 03:01:35.000000000 +0000 @@ -1,6 +1,5 @@ -PostGIS 2.0.0 +PostGIS ============ Extensive documentation can be found at. -HTML: http://www.postgis.org/documentation/manual-svn/ -PDF: http://www.postgis.org/download/postgis-2.0.0SVN.pdf +HTML: http://postgis.net/documentation diff -Nru postgis-2.1.1/extensions/postgis_topology/META.json postgis-2.1.2+dfsg/extensions/postgis_topology/META.json --- postgis-2.1.1/extensions/postgis_topology/META.json 2012-01-09 20:17:59.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_topology/META.json 2014-03-03 03:01:35.000000000 +0000 @@ -30,7 +30,7 @@ }, "repository": { "url": "svn://svn.osgeo.org/postgis/", - "web": "http://www.postgis.org", + "web": "http://postgis.net", "type": "svn" } }, diff -Nru postgis-2.1.1/extensions/postgis_topology/postgis_topology.control postgis-2.1.2+dfsg/extensions/postgis_topology/postgis_topology.control --- postgis-2.1.1/extensions/postgis_topology/postgis_topology.control 2013-11-08 19:46:15.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_topology/postgis_topology.control 2014-03-29 05:39:49.000000000 +0000 @@ -1,6 +1,6 @@ # postgis topology extension comment = 'PostGIS topology spatial types and functions' -default_version = '2.1.1' +default_version = '2.1.2' relocatable = false schema = topology requires = postgis diff -Nru postgis-2.1.1/extensions/postgis_topology/sql_bits/remove_from_extension.sql.in postgis-2.1.2+dfsg/extensions/postgis_topology/sql_bits/remove_from_extension.sql.in --- postgis-2.1.1/extensions/postgis_topology/sql_bits/remove_from_extension.sql.in 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_topology/sql_bits/remove_from_extension.sql.in 2014-03-03 03:01:35.000000000 +0000 @@ -1,9 +1,9 @@ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- $Id: remove_from_extension.sql.in 9324 2012-02-27 22:08:12Z pramsey $ +-- $Id: remove_from_extension.sql.in 12288 2014-03-03 03:01:35Z robe $ ---- -- PostGIS - Spatial Types for PostgreSQL --- http://www.postgis.org +-- http://postgis.net -- -- Copyright (C) 2011 Regina Obe -- diff -Nru postgis-2.1.1/extensions/postgis_topology/sql_bits/topology--unpackaged.sql.in postgis-2.1.2+dfsg/extensions/postgis_topology/sql_bits/topology--unpackaged.sql.in --- postgis-2.1.1/extensions/postgis_topology/sql_bits/topology--unpackaged.sql.in 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/postgis_topology/sql_bits/topology--unpackaged.sql.in 2014-03-29 05:31:01.000000000 +0000 @@ -92,3 +92,4 @@ ALTER EXTENSION postgis_topology ADD type topology.topoelementarray; ALTER EXTENSION postgis_topology ADD type topology.topogeometry; ALTER EXTENSION postgis_topology ADD type topology.validatetopology_returntype; + diff -Nru postgis-2.1.1/extensions/upgradeable_versions.mk postgis-2.1.2+dfsg/extensions/upgradeable_versions.mk --- postgis-2.1.1/extensions/upgradeable_versions.mk 2013-08-18 01:16:25.000000000 +0000 +++ postgis-2.1.2+dfsg/extensions/upgradeable_versions.mk 2014-03-28 12:34:45.000000000 +0000 @@ -7,4 +7,19 @@ 2.1.0rc1 \ 2.1.0rc2 \ 2.1.0rc3 \ - 2.1.0 + 2.1.0 \ + 2.1.1 + +UPGRADEABLE_VERSIONS_MINOR = \ + 2.0.0 \ + 2.0.1 \ + 2.0.2 \ + 2.0.3 \ + 2.0.4 + +UPGRADEABLE_VERSIONS_PATCH = \ + 2.1.0rc1 \ + 2.1.0rc2 \ + 2.1.0rc3 \ + 2.1.0 \ + 2.1.1 diff -Nru postgis-2.1.1/extras/ogc_test_suite/1_schema.sql postgis-2.1.2+dfsg/extras/ogc_test_suite/1_schema.sql --- postgis-2.1.1/extras/ogc_test_suite/1_schema.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extras/ogc_test_suite/1_schema.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,697 +0,0 @@ --- FILE: sqltsch.sql 10/01/98 --- --- 1 2 3 4 5 6 7 8 ---345678901234567890123456789012345678901234567890123456789012345678901234567890 ---////////////////////////////////////////////////////////////////////////////// --- --- Copyright 1998, Open GIS Consortium, Inc. --- --- The material in this document details an Open GIS Consortium Test Suite in --- accordance with a license that your organization has signed. Please refer --- to http://www.opengis.org/testing/ to obtain a copy of the general license --- (it is part of the Conformance Testing Agreement). --- ---////////////////////////////////////////////////////////////////////////////// --- --- OpenGIS Simple Features for SQL (Types and Functions) Test Suite Software --- --- This file "sqltsch.sql" is part 1 of a two part standardized test --- suite in SQL script form. The other file that is required for this test --- suite, "sqltque.sql", one additional script is provided ("sqltcle.sql") that --- performs cleanup operations between test runs, and other documents that --- describe the OGC Conformance Test Program are available via the WWW at --- http://www.opengis.org/testing/index.htm --- --- NOTE CONCERNING INFORMATION ON CONFORMANCE TESTING AND THIS TEST SUITE --- ---------------------------------------------------------------------- --- --- Organizations wishing to submit product for conformance testing should --- access the above WWW site to discover the proper procedure for obtaining --- a license to use the OpenGIS(R) certification mark associated with this --- test suite. --- --- --- NOTE CONCERNING TEST SUITE ADAPTATION --- ------------------------------------- --- --- OGC recognizes that many products will have to adapt this test suite to --- make it work properly. OGC has documented the allowable adaptations within --- this test suite where possible. Other information about adaptations may be --- discovered in the Test Suite Guidelines document for this test suite. --- --- PLEASE NOTE THE OGC REQUIRES THAT ADAPTATIONS ARE FULLY DOCUMENTED USING --- LIBERAL COMMENT BLOCKS CONFORMING TO THE FOLLOWING FORMAT: --- --- -- !#@ ADAPTATION BEGIN --- explanatory text goes here --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- original sql goes here --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- --- adated sql goes here --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---////////////////////////////////////////////////////////////////////////////// --- --- BEGIN TEST SUITE CODE --- ---////////////////////////////////////////////////////////////////////////////// --- --- Create the neccessary feature and geometry tables(views) and metadata tables --- (views) to load and query the "Blue Lake" test data for OpenGIS Simple --- Features for SQL (Types and Functions) test. --- --- Required feature tables (views) are: --- Lakes --- Road Segments --- Divided Routes --- Buildings --- Forests --- Bridges --- Named Places --- Streams --- Ponds --- Map Neatlines --- --- Please refer to the Test Suite Guidelines for this test suite for further --- information concerning this test data. --- ---////////////////////////////////////////////////////////////////////////////// --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- CREATE SPATIAL_REF_SYS METADATA TABLE --- ---////////////////////////////////////////////////////////////////////////////// --- --- --- *** ADAPTATION ALERT **** --- Implementations do not need to execute this statement if they already --- create the spatial_ref_sys table or view via another mechanism. --- The size of the srtext VARCHAR exceeds that allowed on some systems. --- --- --------------------- --- !#@ ADAPTATION BEGIN --- This table is already defined by PostGIS so we comment it out here. --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- ---CREATE TABLE spatial_ref_sys ( --- srid INTEGER NOT NULL PRIMARY KEY, --- auth_name VARCHAR(256), --- auth_srid INTEGER, --- srtext VARCHAR(2048) --- srtext VARCHAR(2000) ---); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- -INSERT INTO spatial_ref_sys (SRID,AUTH_NAME,AUTH_SRID,SRTEXT) -VALUES (101, 'POSC', 32214, -'PROJCS["UTM_ZONE_14N", GEOGCS["World Geodetic System 72", -DATUM["WGS_72", SPHEROID["NWL_10D", 6378135, 298.26]], -PRIMEM["Greenwich", 0], UNIT["Meter", 1.0]], -PROJECTION["Transverse_Mercator"], -PARAMETER["False_Easting", 500000.0], -PARAMETER["False_Northing", 0.0], -PARAMETER["Central_Meridian", -99.0], -PARAMETER["Scale_Factor", 0.9996], -PARAMETER["Latitude_of_origin", 0.0], -UNIT["Meter", 1.0]]' -); --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- CREATE FEATURE SCHEMA --- --- *** ADAPTATION ALERT *** --- The following schema is created using CREATE TABLE statements. --- Furthermore, it DOES NOT create the GEOMETRY_COLUMNS metadata table. --- Implementer's should replace the CREATE TABLES below with the mechanism --- that it uses to create feature tables and the GEOMETRY_COLUMNS table/view --- ---////////////////////////////////////////////////////////////////////////////// --- --------------------------------------------------------------------------------- --- --- Create feature tables --- --------------------------------------------------------------------------------- --- --- Lakes --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE lakes ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64), --- shore POLYGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE lakes ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64) -); -SELECT AddGeometryColumn('lakes','shore','101','POLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Road Segments --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE road_segments ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64), --- aliases VARCHAR(64), --- num_lanes INTEGER --- centerline LINESTRING --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- - -CREATE TABLE road_segments ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64), - aliases VARCHAR(64), - num_lanes INTEGER -); -SELECT AddGeometryColumn('road_segments','centerline','101','LINESTRING','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Divided Routes --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE divided_routes ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64), --- num_lanes INTEGER --- centerlines MULTILINESTRING --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE divided_routes ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64), - num_lanes INTEGER -); -SELECT AddGeometryColumn('divided_routes','centerlines','101','MULTILINESTRING','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Forests --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE forests ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64) --- boundary MULTIPOLYGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE forests ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64) -); -SELECT AddGeometryColumn('forests','boundary','101','MULTIPOLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Bridges --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE bridges ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64) --- position POINT --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE bridges ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64) -); -SELECT AddGeometryColumn('bridges','position','101','POINT','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - - --- --- Streams --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE streams ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64) --- centerline LINESTRING --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE streams ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64) -); -SELECT AddGeometryColumn('streams','centerline','101','LINESTRING','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Buildings --- ---*** ADAPTATION ALERT *** --- A view could be used to provide the below semantics without multiple geometry --- columns in a table. In other words, create two tables. One table would --- contain the POINT position and the other would create the POLYGON footprint. --- Then create a view with the semantics of the buildings table below. --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE buildings ( --- fid INTEGER NOT NULL PRIMARY KEY, --- address VARCHAR(64) --- position POINT --- footprint POLYGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE buildings ( - fid INTEGER NOT NULL PRIMARY KEY, - address VARCHAR(64) -); -SELECT AddGeometryColumn('buildings','position','101','POINT','2'); -SELECT AddGeometryColumn('buildings','footprint','101','POLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Ponds --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE ponds ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64), --- type VARCHAR(64) --- shores MULTIPOYLGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE ponds ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64), - type VARCHAR(64) -); -SELECT AddGeometryColumn('ponds','shores','101','MULTIPOLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- Named Places --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- - --- CREATE TABLE named_places ( --- fid INTEGER NOT NULL PRIMARY KEY, --- name VARCHAR(64) --- boundary POLYGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE named_places ( - fid INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(64) -); -SELECT AddGeometryColumn('named_places','boundary','101','POLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- Map Neatline --- --- --- --- --- !#@ ADAPTATION BEGIN --- We break the schema creation into two steps, first create the --- attribute table, second use the AddGeometryColumn() function --- to create and register the geometry column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- CREATE TABLE map_neatlines ( --- fid INTEGER NOT NULL PRIMARY KEY --- neatline POLYGON --- ); --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -CREATE TABLE map_neatlines ( - fid INTEGER NOT NULL PRIMARY KEY -); -SELECT AddGeometryColumn('map_neatlines','neatline','101','POLYGON','2'); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- POPULATE GEOMETRY AND FEATURE TABLES --- --- *** ADAPTATION ALERT *** --- This script DOES NOT make any inserts into a GEOMTERY_COLUMNS table/view. --- Implementers should insert whatever makes this happen in their implementation --- below. Furthermore, the inserts below may be replaced by whatever mechanism --- may be provided by implementers to insert rows in feature tables such that --- metadata (and other mechanisms) are updated properly. --- ---////////////////////////////////////////////////////////////////////////////// --- ---============================================================================== --- Lakes --- --- We have one lake, Blue Lake. It is a polygon with a hole. Its geometry is --- described in WKT format as: --- 'POLYGON( (52 18, 66 23, 73 9, 48 6, 52 18), --- (59 18, 67 18, 67 13, 59 13, 59 18) )' ---============================================================================== --- --- -INSERT INTO lakes VALUES (101, 'Blue Lake', - PolygonFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))', 101) -); --- ---================== --- Road segments --- --- We have five road segments. Their geometries are all linestrings. --- The geometries are described in WKT format as: --- name 'Route 5', fid 102 --- 'LINESTRING( 0 18, 10 21, 16 23, 28 26, 44 31 )' --- name 'Route 5', fid 103 --- 'LINESTRING( 44 31, 56 34, 70 38 )' --- name 'Route 5', fid 104 --- 'LINESTRING( 70 38, 72 48 )' --- name 'Main Street', fid 105 --- 'LINESTRING( 70 38, 84 42 )' --- name 'Dirt Road by Green Forest', fid 106 --- 'LINESTRING( 28 26, 28 0 )' --- ---================== --- --- -INSERT INTO road_segments VALUES(102, 'Route 5', NULL, 2, - LineStringFromText('LINESTRING( 0 18, 10 21, 16 23, 28 26, 44 31 )' ,101) -); -INSERT INTO road_segments VALUES(103, 'Route 5', 'Main Street', 4, - LineStringFromText('LINESTRING( 44 31, 56 34, 70 38 )' ,101) -); -INSERT INTO road_segments VALUES(104, 'Route 5', NULL, 2, - LineStringFromText('LINESTRING( 70 38, 72 48 )' ,101) -); -INSERT INTO road_segments VALUES(105, 'Main Street', NULL, 4, - LineStringFromText('LINESTRING( 70 38, 84 42 )' ,101) -); -INSERT INTO road_segments VALUES(106, 'Dirt Road by Green Forest', NULL, 1, - LineStringFromText('LINESTRING( 28 26, 28 0 )',101) -); --- ---================== --- DividedRoutes --- --- We have one divided route. Its geometry is a multilinestring. --- The geometry is described in WKT format as: --- 'MULTILINESTRING( (10 48, 10 21, 10 0), (16 0, 10 23, 16 48) )' --- ---================== --- -INSERT INTO divided_routes VALUES(119, 'Route 75', 4, - MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))', 101) -); --- ---================== --- Forests --- --- We have one forest. Its geometry is a multipolygon. --- The geometry is described in WKT format as: --- 'MULTIPOLYGON( ( (28 26, 28 0, 84 0, 84 42, 28 26), --- (52 18, 66 23, 73 9, 48 6, 52 18) ), --- ( (59 18, 67 18, 67 13, 59 13, 59 18) ) )' --- ---================== --- -INSERT INTO forests VALUES(109, 'Green Forest', - MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))', 101) -); --- ---================== --- Bridges --- --- We have one bridge. Its geometry is a point. --- The geometry is described in WKT format as: --- 'POINT( 44 31 )' --- ---================== --- -INSERT INTO bridges VALUES(110, 'Cam Bridge', - PointFromText('POINT( 44 31 )', 101) -); --- ---================== --- Streams --- --- We have two streams. Their geometries are linestrings. --- The geometries are described in WKT format as: --- 'LINESTRING( 38 48, 44 41, 41 36, 44 31, 52 18 )' --- 'LINESTRING( 76 0, 78 4, 73 9 )' --- ---================== --- -INSERT INTO streams VALUES(111, 'Cam Stream', - LineStringFromText('LINESTRING( 38 48, 44 41, 41 36, 44 31, 52 18 )', 101) -); -INSERT INTO streams VALUES(112, NULL, - LineStringFromText('LINESTRING( 76 0, 78 4, 73 9 )', 101) -); --- ---================== --- Buildings --- --- We have two buildings. Their geometries are points and polygons. --- The geometries are described in WKT format as: --- address '123 Main Street' fid 113 --- 'POINT( 52 30 )' and --- 'POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )' --- address '215 Main Street' fid 114 --- 'POINT( 64 33 )' and --- 'POLYGON( ( 66 34, 62 34, 62 32, 66 32, 66 34) )' --- ---================== --- -INSERT INTO buildings VALUES(113, '123 Main Street', - PointFromText('POINT( 52 30 )', 101), - PolygonFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )', 101) -); -INSERT INTO buildings VALUES(114, '215 Main Street', - PointFromText('POINT( 64 33 )', 101), - PolygonFromText('POLYGON( ( 66 34, 62 34, 62 32, 66 32, 66 34) )', 101) -); --- ---================== --- Ponds --- --- We have one pond. Its geometry is a multipolygon. --- The geometry is described in WKT format as: --- 'MULTIPOLYGON( ( ( 24 44, 22 42, 24 40, 24 44) ), ( ( 26 44, 26 40, 28 42, 26 44) ) )' --- ---================== --- -INSERT INTO ponds VALUES(120, NULL, 'Stock Pond', - MultiPolygonFromText('MULTIPOLYGON( ( ( 24 44, 22 42, 24 40, 24 44) ), ( ( 26 44, 26 40, 28 42, 26 44) ) )', 101) -); --- ---================== --- Named Places --- --- We have two named places. Their geometries are polygons. --- The geometries are described in WKT format as: --- name 'Ashton' fid 117 --- 'POLYGON( ( 62 48, 84 48, 84 30, 56 30, 56 34, 62 48) )' --- address 'Goose Island' fid 118 --- 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' --- ---================== --- -INSERT INTO named_places VALUES(117, 'Ashton', - PolygonFromText('POLYGON( ( 62 48, 84 48, 84 30, 56 30, 56 34, 62 48) )', 101) -); -INSERT INTO named_places VALUES(118, 'Goose Island', - PolygonFromText('POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )', 101) -); --- ---================== --- Map Neatlines --- --- We have one map neatline. Its geometry is a polygon. --- The geometry is described in WKT format as: --- 'POLYGON( ( 0 0, 0 48, 84 48, 84 0, 0 0 ) )' --- ---================== --- -INSERT INTO map_neatlines VALUES(115, - PolygonFromText('POLYGON( ( 0 0, 0 48, 84 48, 84 0, 0 0 ) )', 101) -); --- --- --- --- end sqltsch.sql diff -Nru postgis-2.1.1/extras/ogc_test_suite/2_queries.sql postgis-2.1.2+dfsg/extras/ogc_test_suite/2_queries.sql --- postgis-2.1.1/extras/ogc_test_suite/2_queries.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extras/ogc_test_suite/2_queries.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,1341 +0,0 @@ --- FILE: sqltque.sql 10/01/98 --- --- 1 2 3 4 5 6 7 8 ---345678901234567890123456789012345678901234567890123456789012345678901234567890 ---////////////////////////////////////////////////////////////////////////////// --- --- Copyright 1998, Open GIS Consortium, Inc. --- --- The material in this document details an Open GIS Consortium Test Suite in --- accordance with a license that your organization has signed. Please refer --- to http://www.opengis.org/testing/ to obtain a copy of the general license --- (it is part of the Conformance Testing Agreement). --- ---////////////////////////////////////////////////////////////////////////////// --- --- OpenGIS Simple Features for SQL (Types and Functions) Test Suite Software --- --- This file "sqltque.sql" is part 2 of a two part standardized test --- suite in SQL script form. The other file that is required for this test --- suite, "sqltsch.sql", one additional script is provided ("sqltcle.sql") that --- performs cleanup operations between test runs, and other documents that --- describe the OGC Conformance Test Program are available via the WWW at --- http://www.opengis.org/testing/index.htm --- --- NOTE CONCERNING INFORMATION ON CONFORMANCE TESTING AND THIS TEST SUITE --- ---------------------------------------------------------------------- --- --- Organizations wishing to submit product for conformance testing should --- access the above WWW site to discover the proper procedure for obtaining --- a license to use the OpenGIS(R) certification mark associated with this --- test suite. --- --- --- NOTE CONCERNING TEST SUITE ADAPTATION --- ------------------------------------- --- --- OGC recognizes that many products will have to adapt this test suite to --- make it work properly. OGC has documented the allowable adaptations within --- this test suite where possible. Other information about adaptations may be --- discovered in the Test Suite Guidelines document for this test suite. --- --- PLEASE NOTE THE OGC REQUIRES THAT ADAPTATIONS ARE FULLY DOCUMENTED USING --- LIBERAL COMMENT BLOCKS CONFORMING TO THE FOLLOWING FORMAT: --- --- -- !#@ ADAPTATION BEGIN --- explanatory text goes here --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- original sql goes here --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- --- adated sql goes here --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---////////////////////////////////////////////////////////////////////////////// --- --- BEGIN TEST SUITE CODE --- ---////////////////////////////////////////////////////////////////////////////// --- --- Please refer to the Test Suite Guidelines for this test suite for further --- information concerning the test data. The actual data is created by --- executing "sqltsch.sql" --- ---////////////////////////////////////////////////////////////////////////////// --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING THE TABLE/VIEW STRUCTURE --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T1 --- GEOMETRY_COLUMNS table/view is created/updated properly --- For this test we will check to see that all of the feature tables are --- represented by entries in the GEOMETRY_COLUMNS table/view --- --- ANSWER: lakes, road_segments, divided_routes, buildings, forests, bridges, --- named_places, streams, ponds, map_neatlines --- *** ADAPTATION ALERT *** --- Since there are no quotes around the table names in the CREATE TABLEs, --- they will be converted to upper case in many DBMSs, and therefore, the --- answer to this query may be: --- ANSWER: LAKES, ROAD_SEGMENTS, DIVIDED_ROUTES, BUILDINGS, FORESTS, BRIDGES, --- NAMED_PLACES, STREAMS, PONDS, MAP_NEATLINES --- *** ADAPTATION ALERT *** --- If the implementer made the adaptation concerning the buildings table --- in sqltsch.sql, then the answer here may differ slightly. --- --- ---================================ --- -SELECT f_table_name -FROM geometry_columns; --- --- ---================================ --- Conformance Item T2 --- GEOMETRY_COLUMNS table/view is created/updated properly --- For this test we will check to see that the correct geometry columns for the --- streams table is represented in the GEOMETRY_COLUMNS table/view --- --- ANSWER: centerline --- *** ADAPTATION ALERT *** --- Since there are no quotes around the table name, streams, in it's CREATE TABLE, --- it will be converted to upper case in many DBMSs, and therefore, the WHERE --- clause may have to be f_table_name = 'STREAMS'. --- ---================================ --- -SELECT f_geometry_column -FROM geometry_columns -WHERE f_table_name = 'streams'; --- --- ---================================ --- Conformance Item T3 --- GEOMETRY_COLUMNS table/view is created/updated properly --- For this test we will check to see that the correct coordinate dimension --- for the streams table is represented in the GEOMETRY_COLUMNS table/view --- --- ANSWER: 2 --- *** ADAPTATION ALERT *** --- Since there are no quotes around the table name, streams, in it's CREATE TABLE, --- it will be converted to upper case in many DBMSs, and therefore, the WHERE --- clause may have to be f_table_name = 'STREAMS'. --- ---================================ --- -SELECT coord_dimension -FROM geometry_columns -WHERE f_table_name = 'streams'; --- --- ---================================ --- Conformance Item T4 --- GEOMETRY_COLUMNS table/view is created/updated properly --- For this test we will check to see that the correct value of srid for --- the streams table is represented in the GEOMETRY_COLUMNS table/view --- --- ANSWER: 101 --- *** ADAPTATION ALERT *** --- Since there are no quotes around the table name, streams, in it's CREATE TABLE, --- it will be converted to upper case in many DBMSs, and therefore, the WHERE --- clause may have to be f_table_name = 'STREAMS'. --- ---================================ --- -SELECT srid -FROM geometry_columns -WHERE f_table_name = 'streams'; --- --- ---================================ --- Conformance Item T5 --- SPATIAL_REF_SYS table/view is created/updated properly --- For this test we will check to see that the correct value of srtext is --- represented in the SPATIAL_REF_SYS table/view --- --- ANSWER: 'PROJCS["UTM_ZONE_14N", GEOGCS["World Geodetic System 72", --- DATUM["WGS_72", SPHEROID["NWL_10D", 6378135, 298.26]], --- PRIMEM["Greenwich", 0], UNIT["Meter", 1.0]], --- PROJECTION["Traverse_Mercator"], PARAMETER["False_Easting", 500000.0], --- PARAMETER["False_Northing", 0.0], PARAMETER["Central_Meridian", -99.0], --- PARAMETER["Scale_Factor", 0.9996], PARAMETER["Latitude_of_origin", 0.0], --- UNIT["Meter", 1.0]]' --- ---================================ --- -SELECT srtext -FROM SPATIAL_REF_SYS -WHERE SRID = 101; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.10.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T6 --- Dimension(g Geometry) : Integer --- For this test we will determine the dimension of Blue Lake. --- --- ANSWER: 2 --- ---================================ --- -SELECT Dimension(shore) -FROM lakes -WHERE name = 'Blue Lake'; --- --- ---================================ --- Conformance Item T7 --- GeometryType(g Geometry) : String --- For this test we will determine the type of Route 75. --- --- ANSWER: 9 (which corresponds to 'MULTILINESTRING') --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script incorrectly references the 'lakes' table --- instead of the 'divided_routes' table where 'Route 75' --- appears. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT GeometryType(centerlines) --- FROM lakes --- WHERE name = 'Route 75'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT GeometryType(centerlines) -FROM divided_routes -WHERE name = 'Route 75'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T8 --- AsText(g Geometry) : String --- For this test we will determine the WKT representation of Goose Island. --- --- ANSWER: 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' --- ---================================ --- -SELECT AsText(boundary) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T9 --- AsBinary(g Geometry) : Blob --- For this test we will determine the WKB representation of Goose Island. --- We will test by applying AsText to the result of PolygonFromText to the --- result of AsBinary. --- --- ANSWER: 'POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )' --- ---================================ --- -SELECT AsText(PolygonFromWKB(AsBinary(boundary))) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T10 --- SRID(g Geometry) : Integer --- For this test we will determine the SRID of Goose Island. --- --- ANSWER: 101 --- ---================================ --- -SELECT SRID(boundary) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T11 --- IsEmpty(g Geometry) : Integer --- For this test we will determine whether the geometry of a --- segment of Route 5 is empty. --- --- ANSWER: 0 --- *** Adaptation Alert *** --- If the implementer provides IsEmpty as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: FALSE or 'f' --- ---================================ --- -SELECT IsEmpty(centerline) -FROM road_segments -WHERE name = 'Route 5' AND aliases = 'Main Street'; --- ---================================ --- Conformance Item T12 --- IsSimple(g Geometry) : Integer --- For this test we will determine whether the geometry of a --- segment of Blue Lake is simple. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides IsSimple as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT IsSimple(shore) -FROM lakes -WHERE name = 'Blue Lake'; --- ---================================ --- Conformance Item T13 --- Boundary(g Geometry) : Geometry --- For this test we will determine the boundary of Goose Island. --- NOTE: The boundary result is as defined in 3.12.3.2 of 96-015R1. --- --- ANSWER: 'LINESTRING( 67 13, 67 18, 59 18, 59 13, 67 13 )' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script includes extraneous parenthesis around the --- 'boundary' column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT AsText(Boundary((boundary)) --- FROM named_places --- WHERE name = 'Goose Island'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(Boundary(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T14 --- Envelope(g Geometry) : Geometry --- For this test we will determine the envelope of Goose Island. --- --- ANSWER: 'POLYGON( ( 59 13, 59 18, 67 18, 67 13, 59 13) )' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script includes extraneous parenthesis around the --- 'boundary' column. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT AsText(Envelope((boundary)) --- FROM named_places --- WHERE name = 'Goose Island'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(Envelope(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.11.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T15 --- X(p Point) : Double Precision --- For this test we will determine the X coordinate of Cam Bridge. --- --- ANSWER: 44.00 --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script reference to 'Bridges' is not correct, the --- attribute value is 'Cam Bridge'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT X(position) --- FROM bridges --- WHERE name = 'Bridges'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT X(position) -FROM bridges -WHERE name = 'Cam Bridge'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T16 --- Y(p Point) : Double Precision --- For this test we will determine the Y coordinate of Cam Bridge. --- --- ANSWER: 31.00 --- ---================================ --- -SELECT Y(position) -FROM bridges -WHERE name = 'Cam Bridge'; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.12.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T17 --- StartPoint(c Curve) : Point --- For this test we will determine the start point of road segment 102. --- --- ANSWER: 'POINT( 0 18 )' --- ---================================ --- -SELECT AsText(StartPoint(centerline)) -FROM road_segments -WHERE fid = 102; --- ---================================ --- Conformance Item T18 --- EndPoint(c Curve) : Point --- For this test we will determine the end point of road segment 102. --- --- ANSWER: 'POINT( 44 31 )' --- ---================================ --- -SELECT AsText(EndPoint(centerline)) -FROM road_segments -WHERE fid = 102; --- ---================================ --- Conformance Item T19 --- IsClosed(c Curve) : Integer --- For this test we will determine the boundary of Goose Island. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides IsClosed as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT IsClosed(Boundary(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T20 --- IsRing(c Curve) : Integer --- For this test we will determine the boundary of Goose Island. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides IsRing as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT IsRing(Boundary(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T21 --- Length(c Curve) : Double Precision --- For this test we will determine the length of road segment 106. --- --- ANSWER: 26.00 (meters) --- ---================================ --- -SELECT Length(centerline) -FROM road_segments -WHERE fid = 106; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.13.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T22 --- NumPoints(l LineString) : Integer --- For this test we will determine the number of points in road segment 102. --- --- ANSWER: 5 --- ---================================ --- -SELECT NumPoints(centerline) -FROM road_segments -WHERE fid = 102; --- ---================================ --- Conformance Item T23 --- PointN(l LineString, n Integer) : Point --- For this test we will determine the 1st point in road segment 102. --- --- ANSWER: 'POINT( 0 18 )' --- ---================================ --- -SELECT AsText(PointN(centerline, 1)) -FROM road_segments -WHERE fid = 102; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.14.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T24 --- Centroid(s Surface) : Point --- For this test we will determine the centroid of Goose Island. --- --- ANSWER: 'POINT( 63 15.5 )' --- ---================================ --- -SELECT AsText(Centroid(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T25 --- PointOnSurface(s Surface) : Point --- For this test we will determine a point on Goose Island. --- NOTE: For this test we will have to uses the Contains function --- (which we don't test until later). --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Contains as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT Contains(boundary, PointOnSurface(boundary)) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T26 --- Area(s Surface) : Double Precision --- For this test we will determine the area of Goose Island. --- --- ANSWER: 40.00 (square meters) --- ---================================ --- -SELECT Area(boundary) -FROM named_places -WHERE name = 'Goose Island'; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.15.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T27 --- ExteriorRing(p Polygon) : LineString --- For this test we will determine the exteroir ring of Blue Lake. --- --- ANSWER: 'LINESTRING(52 18, 66 23, 73 9, 48 6, 52 18)' --- ---================================ --- -SELECT AsText(ExteriorRing(shore)) -FROM lakes -WHERE name = 'Blue Lake'; --- ---================================ --- Conformance Item T28 --- NumInteriorRings(p Polygon) : Integer --- For this test we will determine the number of interior rings of Blue Lake. --- --- ANSWER: 1 --- ---================================ --- -SELECT NumInteriorRings(shore) -FROM lakes -WHERE name = 'Blue Lake'; --- ---================================ --- Conformance Item T29 --- InteriorRingN(p Polygon, n Integer) : LineString --- For this test we will determine the first interior ring of Blue Lake. --- --- ANSWER: 'LINESTRING(59 18, 67 18, 67 13, 59 13, 59 18)' --- ---================================ --- -SELECT AsText(InteriorRingN(shore, 1)) -FROM lakes -WHERE name = 'Blue Lake'; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.16.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T30 --- NumGeometries(g GeometryCollection) : Integer --- For this test we will determine the number of geometries in Route 75. --- --- ANSWER: 2 --- ---================================ --- -SELECT NumGeometries(centerlines) -FROM divided_routes -WHERE name = 'Route 75'; --- ---================================ --- Conformance Item T31 --- GeometryN(g GeometryCollection, n Integer) : Geometry --- For this test we will determine the second geometry in Route 75. --- --- ANSWER: 'LINESTRING( 16 0, 16 23, 16 48 )' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT GeometryN(centerlines, 2) --- FROM divided_routes --- WHERE name = 'Route 75'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(GeometryN(centerlines, 2)) -FROM divided_routes -WHERE name = 'Route 75'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.17.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T32 --- IsClosed(mc MultiCurve) : Integer --- For this test we will determine if the geometry of Route 75 is closed. --- --- ANSWER: 0 --- *** Adaptation Alert *** --- If the implementer provides IsClosed as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: FALSE or 'f' --- ---================================ --- -SELECT IsClosed(centerlines) -FROM divided_routes -WHERE name = 'Route 75'; --- ---================================ --- Conformance Item T33 --- Length(mc MultiCurve) : Double Precision --- For this test we will determine the length of Route 75. --- NOTE: This makes no semantic sense in our example... --- --- ANSWER: 96.00 (meters) --- ---================================ --- -SELECT Length(centerlines) -FROM divided_routes -WHERE name = 'Route 75'; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.18.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T34 --- Centroid(ms MultiSurface) : Point --- For this test we will determine the centroid of the ponds. --- --- ANSWER: 'POINT( 25 42 )' --- ---================================ --- -SELECT AsText(Centroid(shores)) -FROM ponds -WHERE fid = 120; --- ---================================ --- Conformance Item T35 --- PointOnSurface(ms MultiSurface) : Point --- For this test we will determine a point on the ponds. --- NOTE: For this test we will have to uses the Contains function --- (which we don't test until later). --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Contains as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT Contains(shores, PointOnSurface(shores)) -FROM ponds -WHERE fid = 120; --- ---================================ --- Conformance Item T36 --- Area(ms MultiSurface) : Double Precision --- For this test we will determine the area of the ponds. --- --- ANSWER: 8.00 (square meters) --- ---================================ --- -SELECT Area(shores) -FROM ponds -WHERE fid = 120; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.19.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T37 --- Equals(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of Goose Island is equal --- to the same geometry as consructed from it's WKT representation. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Equals as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT Equals(boundary, PolygonFromText('POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )',1)) -FROM named_places -WHERE name = 'Goose Island'; --- ---================================ --- Conformance Item T38 --- Disjoint(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of Route 75 is disjoint --- from the geometry of Ashton. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Disjoint as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- -SELECT Disjoint(centerlines, boundary) -FROM divided_routes, named_places -WHERE divided_routes.name = 'Route 75' AND named_places.name = 'Ashton'; --- ---================================ --- Conformance Item T39 --- Touch(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of Cam Stream touches --- the geometry of Blue Lake. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Touch as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- The test script attempts to test the 'Touch' function, but the --- specification document uses 'Touches' as the function name. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Touch(centerline, shore) --- FROM streams, lakes --- WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Touches(centerline, shore) -FROM streams, lakes -WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T40 --- Within(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of the house at 215 Main Street --- is within Ashton. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Within as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script reverses the correct order of arguments to 'Within()'. --- Specification says 'Within(g1,g2) is 'TRUE if g1 is completely --- contained in g2' and test explanation says we are checking if --- the house (g1, footprint) is within Ashton (g2, boundary). --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Within(boundary, footprint) --- FROM named_places, buildings --- WHERE named_places.name = 'Ashton' AND buildings.address = '215 Main Street'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Within(footprint, boundary) -FROM named_places, buildings -WHERE named_places.name = 'Ashton' AND buildings.address = '215 Main Street'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T41 --- Overlap(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of Green Forest overlaps --- the geometry of Ashton. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Overlap as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script uses 'Overlap()' as the function name and specification --- gives 'Overlaps()' as the function name. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Overlap(forest.boundary, named_places.boundary) --- FROM forests, named_places --- WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Overlaps(forests.boundary, named_places.boundary) -FROM forests, named_places -WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T42 --- Cross(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of road segment 102 crosses --- the geometry of Route 75. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Cross as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script uses 'Cross()' as the function name and specification --- gives 'Crosses()' as the function name. --- Test script references 'road_segment' table and the correct table --- name is 'road_segments'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Cross(road_segment.centerline, divided_routes.centerlines) --- FROM road_segment, divided_routes --- WHERE road_segment.fid = 102 AND divided_routes.name = 'Route 75'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Crosses(road_segments.centerline, divided_routes.centerlines) -FROM road_segments, divided_routes -WHERE road_segments.fid = 102 AND divided_routes.name = 'Route 75'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T43 --- Intersects(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of road segment 102 intersects --- the geometry of Route 75. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Intersects as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script references 'road_segment' table and the correct table --- name is 'road_segments'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Intersects(road_segment.centerline, divided_routes.centerlines) --- FROM road_segment, divided_routes --- WHERE road_segment.fid = 102 AND divided_routes.name = 'Route 75'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Intersects(road_segments.centerline, divided_routes.centerlines) -FROM road_segments, divided_routes -WHERE road_segments.fid = 102 AND divided_routes.name = 'Route 75'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T44 --- Contains(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine if the geometry of Green Forest contains --- the geometry of Ashton. --- --- ANSWER: 0 --- *** Adaptation Alert *** --- If the implementer provides Contains as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: FALSE or 'f' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script references 'forest' table and the correct table --- name is 'forests'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Contains(forest.boundary, named_places.boundary) --- FROM forests, named_places --- WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Contains(forests.boundary, named_places.boundary) -FROM forests, named_places -WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T45 --- Relate(g1 Geometry, g2 Geometry, PatternMatrix String) : Integer --- For this test we will determine if the geometry of Green Forest relates to --- the geometry of Ashton using the pattern "TTTTTTTTT". --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Relate as a boolean function, instead of as --- an INTEGER function, then: --- ANSWER: TRUE or 't' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script references 'forest' table and the correct table --- name is 'forests'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Relate(forest.boundary, named_places.boundary, 'TTTTTTTTT') --- FROM forests, named_places --- WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT Relate(forests.boundary, named_places.boundary, 'TTTTTTTTT') -FROM forests, named_places -WHERE forests.name = 'Green Forest' AND named_places.name = 'Ashton'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.20.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T46 --- Distance(g1 Geometry, g2 Geometry) : Double Precision --- For this test we will determine the distance between Cam Bridge and Ashton. --- --- ANSWER: 12 (meters) --- ---================================ --- -SELECT Distance(position, boundary) -FROM bridges, named_places -WHERE bridges.name = 'Cam Bridge' AND named_places.name = 'Ashton'; --- --- --- ---////////////////////////////////////////////////////////////////////////////// --- --- QUERIES TESTING FUNCTIONS IN SECTION 3.2.21.2 --- ---////////////////////////////////////////////////////////////////////////////// --- ---================================ --- Conformance Item T47 --- Intersection(g1 Geometry, g2 Geometry) : Geometry --- For this test we will determine the intersection between Cam Stream and --- Blue Lake. --- --- ANSWER: 'POINT( 52 18 )' --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Intersection(centerline, shore) --- FROM streams, lakes --- WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(Intersection(centerline, shore)) -FROM streams, lakes -WHERE streams.name = 'Cam Stream' AND lakes.name = 'Blue Lake'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T48 --- Difference(g1 Geometry, g2 Geometry) : Geometry --- For this test we will determine the difference between Ashton and --- Green Forest. --- --- ANSWER: 'POLYGON( ( 56 34, 62 48, 84 48, 84 42, 56 34) )' --- NOTE: The order of the vertices here is arbitrary. --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- Note that the return geometry is the same as the official --- answer but with a different start point. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Difference(named_places.boundary, forests.boundary) --- FROM named_places, forests --- WHERE named_places.name = 'Ashton' AND forests.name = 'Green Forest'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(Difference(named_places.boundary, forests.boundary)) -FROM named_places, forests -WHERE named_places.name = 'Ashton' AND forests.name = 'Green Forest'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T49 --- Union(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine the union of Blue Lake and Goose Island --- --- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' --- NOTE: The outer ring of Blue Lake is the answer. --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- Test script uses 'Ashton' as the place name where it means --- to use 'Goose Island'. --- Specification uses 'Union()' as a function name, but UNION --- is a SQL reserved work. Function name adapted to 'GeomUnion()' --- for out implementation. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT Union(shore, boundary) --- FROM lakes, named_places --- WHERE lakes.name = 'Blue Lake' AND named_places.name = Ashton'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(GeomUnion(shore, boundary)) -FROM lakes, named_places -WHERE lakes.name = 'Blue Lake' AND named_places.name = 'Goose Island'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T50 --- SymmetricDifference(g1 Geometry, g2 Geometry) : Integer --- For this test we will determine the symmetric difference of Blue Lake --- and Goose Island --- --- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' --- NOTE: The outer ring of Blue Lake is the answer. --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- Test script uses 'Ashton' as the place name where it means --- to use 'Goose Island'. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT SymmetricDifference(shore, boundary) --- FROM lakes, named_places --- WHERE lakes.name = 'Blue Lake' OR named_places.name = 'Ashton'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(SymmetricDifference(shore, boundary)) -FROM lakes, named_places -WHERE lakes.name = 'Blue Lake' AND named_places.name = 'Goose Island'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T51 --- Buffer(g Geometry, d Double Precision) : Geometry --- For this test we will make a 15 meter buffer about Cam Bridge. --- NOTE: This test we count the number of buildings contained in --- the buffer that is generated. This test only works because --- we have a single bridge record, two building records, and --- we selected the buffer size such that only one of the buildings --- is contained in the buffer. --- --- ANSWER: 1 --- *** Adaptation Alert *** --- If the implementer provides Contains as a boolean function, instead of as --- an INTEGER function, then the WHERE clause should be: --- WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint) = 'TRUE'; --- - or - --- WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint) = 't'; --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Our boolean function implementations return actual boolean values, --- so no further logical comparison (to 1 or 't') is required. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT count(*) --- FROM buildings, bridges --- WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint) = 1; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT count(*) -FROM buildings, bridges -WHERE Contains(Buffer(bridges.position, 15.0), buildings.footprint); --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END --- ---================================ --- Conformance Item T52 --- ConvexHull(g Geometry) : Geometry --- For this test we will determine the convex hull of Blue Lake --- --- ANSWER: 'POLYGON((52 18,66 23,73 9,48 6,52 18))' --- NOTE: The outer ring of Blue Lake is the answer. --- ---================================ --- --- !#@ ADAPTATION BEGIN --- Test script does not wrap a geometry-returning function in --- AsText(), so there is no guarantee that the return string --- will match the official answer. --- Note that the return geometry is the same as the official --- answer but with a different start point. --- --------------------- --- -- BEGIN ORIGINAL SQL --- --------------------- --- SELECT ConvexHull(shore) --- FROM lakes --- WHERE lakes.name = 'Blue Lake'; --- --------------------- --- -- END ORIGINAL SQL --- --------------------- --- -- BEGIN ADAPTED SQL --- --------------------- -SELECT AsText(ConvexHull(shore)) -FROM lakes -WHERE lakes.name = 'Blue Lake'; --- --------------------- --- -- END ADAPTED SQL --- --------------------- --- -- !#@ ADAPTATION END - - --- --- --- --- end sqltque.sql diff -Nru postgis-2.1.1/extras/ogc_test_suite/3_cleanup.sql postgis-2.1.2+dfsg/extras/ogc_test_suite/3_cleanup.sql --- postgis-2.1.1/extras/ogc_test_suite/3_cleanup.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extras/ogc_test_suite/3_cleanup.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ --- FILE: sqltcle.sql 10/01/98 --- --- *** ADAPTATION ALERT *** --- OGC will not examine this script for adaptations. --- Please add any other cleanup to this script. --- -DELETE FROM spatial_ref_sys; -DELETE FROM geometry_columns; -DROP TABLE lakes; -DROP TABLE road_segments; -DROP TABLE divided_routes; -DROP TABLE forests; -DROP TABLE bridges; -DROP TABLE streams; -DROP TABLE buildings; -DROP TABLE ponds; -DROP TABLE named_places; -DROP TABLE map_neatlines; ---DROP TABLE route_segments; ---DROP TABLE routes; ---DROP TABLE map_components; ---DROP TABLE maps; diff -Nru postgis-2.1.1/extras/ogc_test_suite/Makefile postgis-2.1.2+dfsg/extras/ogc_test_suite/Makefile --- postgis-2.1.1/extras/ogc_test_suite/Makefile 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extras/ogc_test_suite/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -TESTDB=ogc_test_suite -all: - createdb $(TESTDB) > /dev/null - createlang plpgsql $(TESTDB) - psql $(TESTDB) < ../../postgis.sql >/dev/null 2>&1 - psql -a -f 1_schema.sql $(TESTDB) > 1_output.txt 2>&1 - psql -a -f 2_queries.sql $(TESTDB) > 2_output.txt 2>&1 - @echo "---------------------------------------" - @echo "---* Check results in 2_output.txt *---" - @echo "---------------------------------------" - -clean: - dropdb $(TESTDB) - rm -f 1_output.txt - rm -f 2_output.txt diff -Nru postgis-2.1.1/extras/ogc_test_suite/README postgis-2.1.2+dfsg/extras/ogc_test_suite/README --- postgis-2.1.1/extras/ogc_test_suite/README 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/extras/ogc_test_suite/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -This test suite was originally downloaded from -http://www.opengeospatial.org/resources/?page=testing&view=sfsql -and legal adaptations necessary for PostGIS were added to allow it -to run. - -- All tests must be run in a database named 'ogc' in order for the - AddGeometryColumn() function calls to work. - - createdb ogc - createlang plpgsql ogc - psql ogc < ../../postgis.sql - - psql -a -f 1_schema.sql ogc >& 1_output.txt - psql -a -f 2_queries.sql ogc >& 2_output.txt - psql -a -f 3_cleanup.sql ogc >& 3_output.txt - -- Load the test files in order. File 2 has the actual tests, with the - correct answers for each test in the comments. - - diff -Nru postgis-2.1.1/java/jdbc/jtssrc/pom.xml postgis-2.1.2+dfsg/java/jdbc/jtssrc/pom.xml --- postgis-2.1.1/java/jdbc/jtssrc/pom.xml 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/java/jdbc/jtssrc/pom.xml 2014-03-25 20:02:33.000000000 +0000 @@ -5,7 +5,7 @@ org.postgis postgis-jdbc-jtsparser - 2.0.0 + 2.1.2 jar Postgis JDBC Driver JTS Parser diff -Nru postgis-2.1.1/java/jdbc/Makefile postgis-2.1.2+dfsg/java/jdbc/Makefile --- postgis-2.1.1/java/jdbc/Makefile 2013-11-08 19:46:16.000000000 +0000 +++ postgis-2.1.2+dfsg/java/jdbc/Makefile 2014-03-29 05:39:49.000000000 +0000 @@ -10,7 +10,7 @@ # * # ********************************************************************** -ANT=/usr/bin/ant +ANT=/opt/local/bin/ant all: build diff -Nru postgis-2.1.1/java/jdbc/pom.xml postgis-2.1.2+dfsg/java/jdbc/pom.xml --- postgis-2.1.1/java/jdbc/pom.xml 2012-08-25 03:16:25.000000000 +0000 +++ postgis-2.1.2+dfsg/java/jdbc/pom.xml 2014-03-25 20:02:33.000000000 +0000 @@ -176,7 +176,7 @@ 2 1 - 0SVN + 2 diff -Nru postgis-2.1.1/java/jdbc/src/org/postgis/GeometryCollection.java postgis-2.1.2+dfsg/java/jdbc/src/org/postgis/GeometryCollection.java --- postgis-2.1.1/java/jdbc/src/org/postgis/GeometryCollection.java 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/java/jdbc/src/org/postgis/GeometryCollection.java 2014-01-30 19:17:00.000000000 +0000 @@ -21,7 +21,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA or visit the web at * http://www.gnu.org. * - * $Id: GeometryCollection.java 9324 2012-02-27 22:08:12Z pramsey $ + * $Id: GeometryCollection.java 12202 2014-01-30 19:17:00Z pramsey $ */ package org.postgis; @@ -34,7 +34,7 @@ * * @author markus.schaber@logix-tt.com * - * $Id: GeometryCollection.java 9324 2012-02-27 22:08:12Z pramsey $ + * $Id: GeometryCollection.java 12202 2014-01-30 19:17:00Z pramsey $ */ public class GeometryCollection extends ComposedGeom { @@ -68,10 +68,10 @@ } protected void innerWKT(StringBuffer SB) { - subgeoms[0].outerWKT(SB, false); + subgeoms[0].outerWKT(SB, true); for (int i = 1; i < subgeoms.length; i++) { SB.append(','); - subgeoms[i].outerWKT(SB, false); + subgeoms[i].outerWKT(SB, true); } } diff -Nru postgis-2.1.1/liblwgeom/cunit/cu_geodetic.c postgis-2.1.2+dfsg/liblwgeom/cunit/cu_geodetic.c --- postgis-2.1.1/liblwgeom/cunit/cu_geodetic.c 2013-06-07 17:39:43.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/cunit/cu_geodetic.c 2014-03-08 00:51:28.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: cu_geodetic.c 11535 2013-06-07 17:39:43Z pramsey $ + * $Id: cu_geodetic.c 12308 2014-03-08 00:51:28Z pramsey $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net @@ -674,6 +674,31 @@ line2pts("LINESTRING(90.0 80.0, -90.0 90.0)", &B1, &B2); rv = edge_intersects(&A1, &A2, &B1, &B2); CU_ASSERT(rv == (PIR_INTERSECTS|PIR_B_TOUCH_LEFT|PIR_A_TOUCH_RIGHT) ); + + /* Antipodal straddles. Great circles cross but at opposite */ + /* sides of the globe */ + /* #2534 */ + /* http://www.gcmap.com/mapui?P=60N+90E-20S+90E%0D%0A0N+0E-90.04868865037885W+57.44011727050777S%0D%0A&MS=wls&DU=mi */ + line2pts("LINESTRING(90.0 60.0, 90.0 -20.0)", &A1, &A2); + line2pts("LINESTRING(0.0 0.0, -90.04868865037885 -57.44011727050777)", &B1, &B2); + rv = edge_intersects(&A1, &A2, &B1, &B2); + CU_ASSERT(rv == 0); + + line2pts("LINESTRING(-5 0, 5 0)", &A1, &A2); + line2pts("LINESTRING(179 -5, 179 5)", &B1, &B2); + rv = edge_intersects(&A1, &A2, &B1, &B2); + CU_ASSERT(rv == 0); + + line2pts("LINESTRING(175 -85, 175 85)", &A1, &A2); + line2pts("LINESTRING(65 0, -105 0)", &B1, &B2); + rv = edge_intersects(&A1, &A2, &B1, &B2); + CU_ASSERT(rv == 0); + + line2pts("LINESTRING(175 -85, 175 85)", &A1, &A2); + line2pts("LINESTRING(45 0, -125 0)", &B1, &B2); + rv = edge_intersects(&A1, &A2, &B1, &B2); + CU_ASSERT(rv == 0); + } static void test_edge_distance_to_point(void) @@ -1195,6 +1220,21 @@ lwgeom_free(lwg1); lwgeom_free(lwg2); + /* Ticket #2638, no "M" */ + lwg1 = lwgeom_from_wkt("LINESTRING (-41.0821 50.3036,50 -41)", LW_PARSER_CHECK_NONE); + lwg2 = lwgeom_from_wkt("POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))", LW_PARSER_CHECK_NONE); + d = lwgeom_distance_spheroid(lwg1, lwg2, &s, 0.0); + CU_ASSERT_DOUBLE_EQUAL(d, 0.0, 0.00001); + lwgeom_free(lwg1); + lwgeom_free(lwg2); + + /* Ticket #2638, with "M" */ + lwg1 = lwgeom_from_wkt("LINESTRING M (-41.0821 50.3036 1,50 -41 1)", LW_PARSER_CHECK_NONE); + lwg2 = lwgeom_from_wkt("POLYGON M ((0 0 2,10 0 1,10 10 -2,0 10 -5,0 0 -5),(5 5 6,7 5 6,7 7 6,5 7 10,5 5 -2))", LW_PARSER_CHECK_NONE); + d = lwgeom_distance_spheroid(lwg1, lwg2, &s, 0.0); + CU_ASSERT_DOUBLE_EQUAL(d, 0.0, 0.00001); + lwgeom_free(lwg1); + lwgeom_free(lwg2); } static void test_spheroid_distance(void) diff -Nru postgis-2.1.1/liblwgeom/cunit/cu_tree.c postgis-2.1.2+dfsg/liblwgeom/cunit/cu_tree.c --- postgis-2.1.1/liblwgeom/cunit/cu_tree.c 2013-11-04 23:51:23.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/cunit/cu_tree.c 2014-03-25 08:34:20.000000000 +0000 @@ -283,6 +283,24 @@ lwgeom_free(lwg1); lwgeom_free(lwg2); CU_ASSERT_DOUBLE_EQUAL(d1, d2, 0.0000001); + + /* Ticket #2634 */ + lwg1 = lwgeom_from_wkt("MULTIPOINT (-10 40,-10 65,10 40,10 65,30 40,30 65,50 40,50 65)", LW_PARSER_CHECK_NONE); + lwg2 = lwgeom_from_wkt("POLYGON((-9.1111111 40,-9.14954053919354 39.6098193559677,-9.26335203497743 39.2346331352698,-9.4481718753949138.8888595339608,-9.6968975376269 38.5857864376269,-9.99997063396079 38.3370607753949,-10.3457442352698 38.1522409349774,-10.7209304559677 38.0384294391935,-11.1111111 38,-11.5012917440323 38.0384294391935,-11.8764779647302 38.1522409349774,-12.2222515660392 38.3370607753949,-12.5253246623731 38.5857864376269,-12.7740503246051 38.8888595339608,-12.9588701650226 39.2346331352698,-13.0726816608065 39.6098193559677,-13.1111111 40,-13.0726816608065 40.3901806440322,-12.9588701650226 40.7653668647302,-12.7740503246051 41.1111404660392,-12.5253246623731 41.4142135623731,-12.2222515660392 41.6629392246051,-11.8764779647302 41.8477590650226,-11.5012917440323 41.9615705608065,-11.1111111 42,-10.7209304559678 41.9615705608065,-10.3457442352698 41.8477590650226,-9.9999706339608 41.6629392246051,-9.69689753762691 41.4142135623731,-9.44817187539491 41.1111404660392,-9.26335203497743 40.7653668647302,-9.14954053919354 40.3901806440323,-9.1111111 40))", LW_PARSER_CHECK_NONE); + c1 = lwgeom_calculate_circ_tree(lwg1); + c2 = lwgeom_calculate_circ_tree(lwg2); + d1 = circ_tree_distance_tree(c1, c2, &s, threshold); + d2 = lwgeom_distance_spheroid(lwg1, lwg2, &s, threshold); + // printf("d1 = %g d2 = %g\n", d1 * WGS84_RADIUS, d2 * WGS84_RADIUS); + // printf("multipoint\n"); + // circ_tree_print(c1, 0); + // printf("polygon\n"); + // circ_tree_print(c2, 0); + circ_tree_free(c1); + circ_tree_free(c2); + lwgeom_free(lwg1); + lwgeom_free(lwg2); + CU_ASSERT_DOUBLE_EQUAL(d1, d2, 0.0000001); } diff -Nru postgis-2.1.1/liblwgeom/g_box.c postgis-2.1.2+dfsg/liblwgeom/g_box.c --- postgis-2.1.1/liblwgeom/g_box.c 2013-11-04 23:17:11.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/g_box.c 2014-03-06 05:53:39.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: g_box.c 12083 2013-11-04 23:17:11Z pramsey $ + * $Id: g_box.c 12296 2014-03-06 05:53:39Z pramsey $ * * PostGIS - Spatial Types for PostgreSQL * Copyright 2009 Paul Ramsey @@ -9,6 +9,10 @@ * **********************************************************************/ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + #include "liblwgeom_internal.h" #include "lwgeom_log.h" #include @@ -240,10 +244,19 @@ if ( g1->xmax < g2->xmin || g1->ymax < g2->ymin || g1->xmin > g2->xmax || g1->ymin > g2->ymax ) return LW_FALSE; + + /* Deal with the geodetic case special: we only compare the geodetic boxes (x/y/z) */ + /* Never the M dimension */ + if ( FLAGS_GET_GEODETIC(g1->flags) && FLAGS_GET_GEODETIC(g2->flags) ) + { + if ( g1->zmax < g2->zmin || g1->zmin > g2->zmax ) + return LW_FALSE; + else + return LW_TRUE; + } /* If both geodetic or both have Z, check Z */ - if ( (FLAGS_GET_Z(g1->flags) && FLAGS_GET_Z(g2->flags)) || - (FLAGS_GET_GEODETIC(g1->flags) && FLAGS_GET_GEODETIC(g2->flags)) ) + if ( FLAGS_GET_Z(g1->flags) && FLAGS_GET_Z(g2->flags) ) { if ( g1->zmax < g2->zmin || g1->zmin > g2->zmax ) return LW_FALSE; diff -Nru postgis-2.1.1/liblwgeom/lwgeodetic.c postgis-2.1.2+dfsg/liblwgeom/lwgeodetic.c --- postgis-2.1.1/liblwgeom/lwgeodetic.c 2013-06-07 17:39:43.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/lwgeodetic.c 2014-03-26 09:37:44.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: lwgeodetic.c 11535 2013-06-07 17:39:43Z pramsey $ + * $Id: lwgeodetic.c 12358 2014-03-26 09:37:44Z pramsey $ * * PostGIS - Spatial Types for PostgreSQL * Copyright 2009 Paul Ramsey @@ -443,10 +443,10 @@ return; } -static inline double vector_magnitude(const POINT3D* v) -{ - return sqrt(v->x*v->x + v->y*v->y + v->z*v->z); -} +// static inline double vector_magnitude(const POINT3D* v) +// { +// return sqrt(v->x*v->x + v->y*v->y + v->z*v->z); +// } /** * Angle between two unit vectors @@ -1419,7 +1419,22 @@ return LW_SUCCESS; } - +void lwpoly_pt_outside(const LWPOLY *poly, POINT2D *pt_outside) +{ + /* Make sure we have boxes */ + if ( poly->bbox ) + { + gbox_pt_outside(poly->bbox, pt_outside); + return; + } + else + { + GBOX gbox; + lwgeom_calculate_gbox_geodetic((LWGEOM*)poly, &gbox); + gbox_pt_outside(&gbox, pt_outside); + return; + } +} /** * Given a unit geocentric gbox, return a lon/lat (degrees) coordinate point point that is @@ -1814,6 +1829,7 @@ } e1.start = e1.end; } + /* On sphere, return answer */ if ( use_sphere ) return distance; @@ -3078,7 +3094,7 @@ int edge_intersects(const POINT3D *A1, const POINT3D *A2, const POINT3D *B1, const POINT3D *B2) { - POINT3D AN, BN; /* Normals to plane A and plane B */ + POINT3D AN, BN, VN; /* Normals to plane A and plane B */ double ab_dot; int a1_side, a2_side, b1_side, b2_side; int rv = PIR_NO_INTERACT; @@ -3126,8 +3142,21 @@ if ( a1_side != a2_side && (a1_side + a2_side) == 0 && b1_side != b2_side && (b1_side + b2_side) == 0 ) { - /* Mid-point intersection! */ - return PIR_INTERSECTS; + /* Have to check if intersection point is inside both arcs */ + unit_normal(&AN, &BN, &VN); + if ( point_in_cone(A1, A2, &VN) && point_in_cone(B1, B2, &VN) ) + { + return PIR_INTERSECTS; + } + + /* Have to check if intersection point is inside both arcs */ + vector_scale(&VN, -1); + if ( point_in_cone(A1, A2, &VN) && point_in_cone(B1, B2, &VN) ) + { + return PIR_INTERSECTS; + } + + return PIR_NO_INTERACT; } /* The rest are all intersects variants... */ diff -Nru postgis-2.1.1/liblwgeom/lwgeodetic.h postgis-2.1.2+dfsg/liblwgeom/lwgeodetic.h --- postgis-2.1.1/liblwgeom/lwgeodetic.h 2012-10-25 22:17:39.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/lwgeodetic.h 2014-03-25 08:17:56.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: lwgeodetic.h 10566 2012-10-25 22:17:39Z pramsey $ + * $Id: lwgeodetic.h 12343 2014-03-25 08:17:56Z pramsey $ * * PostGIS - Spatial Types for PostgreSQL * Copyright 2009 Paul Ramsey @@ -105,6 +105,7 @@ void geographic_point_init(double lon, double lat, GEOGRAPHIC_POINT *g); int ptarray_contains_point_sphere(const POINTARRAY *pa, const POINT2D *pt_outside, const POINT2D *pt_to_test); int lwpoly_covers_point2d(const LWPOLY *poly, const POINT2D *pt_to_test); +void lwpoly_pt_outside(const LWPOLY *poly, POINT2D *pt_outside); int ptarray_point_in_ring(const POINTARRAY *pa, const POINT2D *pt_outside, const POINT2D *pt_to_test); double ptarray_area_sphere(const POINTARRAY *pa); double latitude_degrees_normalize(double lat); @@ -130,4 +131,16 @@ double spheroid_direction(const GEOGRAPHIC_POINT *r, const GEOGRAPHIC_POINT *s, const SPHEROID *spheroid); int spheroid_project(const GEOGRAPHIC_POINT *r, const SPHEROID *spheroid, double distance, double azimuth, GEOGRAPHIC_POINT *g); + #endif /* _LWGEODETIC_H */ + + + +/** +* Notes for rewrite +* +* Define separate POINT types for 2-d-points-in-radiands and 3-d-points-in-geocentric +* Maintain consistent units (radians?) throughout all calculations +* Put an index pointer onto LWGEOM itself, and cache the indexed LWGEOM instead of a bare tree +* only primitive objects should get a tree +*/ \ No newline at end of file diff -Nru postgis-2.1.1/liblwgeom/lwgeodetic_tree.c postgis-2.1.2+dfsg/liblwgeom/lwgeodetic_tree.c --- postgis-2.1.1/liblwgeom/lwgeodetic_tree.c 2013-06-03 08:26:51.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/lwgeodetic_tree.c 2014-03-26 15:04:16.000000000 +0000 @@ -80,6 +80,11 @@ node->num_nodes = 0; node->nodes = NULL; node->edge_num = i; + + /* Zero out metadata */ + node->pt_outside.x = 0.0; + node->pt_outside.y = 0.0; + node->geom_type = 0; return node; } @@ -97,6 +102,9 @@ tree->nodes = NULL; tree->num_nodes = 0; tree->edge_num = 0; + tree->geom_type = POINTTYPE; + tree->pt_outside.x = 0.0; + tree->pt_outside.y = 0.0; return tree; } @@ -109,8 +117,8 @@ { POINT2D p1, p2; unsigned int u1, u2; - CIRC_NODE *c1 = (CIRC_NODE*)v1; - CIRC_NODE *c2 = (CIRC_NODE*)v2; + CIRC_NODE *c1 = *((CIRC_NODE**)v1); + CIRC_NODE *c2 = *((CIRC_NODE**)v2); p1.x = rad2deg((c1->center).lon); p1.y = rad2deg((c1->center).lat); p2.x = rad2deg((c2->center).lon); @@ -199,7 +207,7 @@ GEOGRAPHIC_POINT new_center, c1; double new_radius; double offset1, dist, D, r1, ri; - int i; + int i, new_geom_type; LWDEBUGF(3, "called with %d nodes --", num_nodes); @@ -210,6 +218,7 @@ /* Initialize calculation with values of the first circle */ new_center = c[0]->center; new_radius = c[0]->radius; + new_geom_type = c[0]->geom_type; /* Merge each remaining circle into the new circle */ for ( i = 1; i < num_nodes; i++ ) @@ -220,6 +229,32 @@ dist = sphere_distance(&c1, &(c[i]->center)); ri = c[i]->radius; + /* Promote geometry types up the tree, getting more and more collected */ + /* Go until we find a value */ + if ( ! new_geom_type ) + { + new_geom_type = c[i]->geom_type; + } + /* Promote singleton to a multi-type */ + else if ( ! lwtype_is_collection(new_geom_type) ) + { + /* Anonymous collection if types differ */ + if ( new_geom_type != c[i]->geom_type ) + { + new_geom_type = COLLECTIONTYPE; + } + else + { + new_geom_type = lwtype_get_collectiontype(new_geom_type); + } + } + /* If we can't add next feature to this collection cleanly, promote again to anonymous collection */ + else if ( new_geom_type != lwtype_get_collectiontype(c[i]->geom_type) ) + { + new_geom_type = COLLECTIONTYPE; + } + + LWDEBUGF(3, "distance between new (%g %g) and %i (%g %g) is %g", c1.lon, c1.lat, i, c[i]->center.lon, c[i]->center.lat, dist); if ( FP_EQUALS(dist, 0) ) @@ -280,13 +315,14 @@ node->num_nodes = num_nodes; node->nodes = c; node->edge_num = -1; + node->geom_type = new_geom_type; + node->pt_outside.x = 0.0; + node->pt_outside.y = 0.0; return node; } /** -* Build a tree of nodes from a point array, one node per edge, and each -* with an associated measure range along a one-dimensional space. We -* can then search that space as a range tree. +* Build a tree of nodes from a point array, one node per edge. */ CIRC_NODE* circ_tree_new(const POINTARRAY* pa) @@ -352,6 +388,9 @@ int num_parents = 0; int j; + // TODO, roll geom_type *up* as tree is built, changing to collection types as simple types are merged + // TODO, change the distance algorithm to drive down to simple types first, test pip on poly/other cases, then test edges + while( num_children > 1 ) { for ( j = 0; j < num_children; j++ ) @@ -389,6 +428,24 @@ /** +* Returns a #POINT2D that is a vertex of the input shape +*/ +int circ_tree_get_point(const CIRC_NODE* node, POINT2D* pt) +{ + if ( circ_node_is_leaf(node) ) + { + pt->x = node->p1->x; + pt->y = node->p1->y; + return LW_SUCCESS; + } + else + { + return circ_tree_get_point(node->nodes[0], pt); + } +} + + +/** * Walk the tree and count intersections between the stab line and the edges. * odd => containment, even => no containment. * KNOWN PROBLEM: Grazings (think of a sharp point, just touching the @@ -498,13 +555,19 @@ double min_dist = MAXFLOAT; double max_dist = MAXFLOAT; GEOGRAPHIC_POINT closest1, closest2; - double distance2; double threshold_radians = threshold / spheroid->radius; circ_tree_distance_tree_internal(n1, n2, threshold_radians, &min_dist, &max_dist, &closest1, &closest2); - distance2 = spheroid_distance(&closest1, &closest2, spheroid); - return distance2; + /* Spherical case */ + if ( spheroid->a == spheroid->b ) + { + return spheroid->radius * sphere_distance(&closest1, &closest2); + } + else + { + return spheroid_distance(&closest1, &closest2, spheroid); + } } static double @@ -514,12 +577,12 @@ double d, d_min; int i; - LWDEBUGF(4, "entered, min_dist %.8g max_dist %.8g", *min_dist, *max_dist); + LWDEBUGF(4, "entered, min_dist=%.8g max_dist=%.8g, type1=%d, type2=%d", *min_dist, *max_dist, n1->geom_type, n2->geom_type); // circ_tree_print(n1, 0); // circ_tree_print(n2, 0); /* Short circuit if we've already hit the minimum */ - if( FP_LT(*min_dist, threshold) ) + if( *min_dist <= threshold ) return *min_dist; /* If your minimum is greater than anyone's maximum, you can't hold the winner */ @@ -535,127 +598,204 @@ if( max < *max_dist ) *max_dist = max; + /* Polygon on one side, primitive type on the other. Check for point-in-polygon */ + /* short circuit. */ + if ( n1->geom_type == POLYGONTYPE && n2->geom_type && ! lwtype_is_collection(n2->geom_type) ) + { + POINT2D pt; + circ_tree_get_point(n2, &pt); + LWDEBUGF(4, "n1 is polygon, testing if contains (%.5g,%.5g)", pt.x, pt.y); + if ( circ_tree_contains_point(n1, &pt, &(n1->pt_outside), NULL) ) + { + LWDEBUG(4, "it does"); + *min_dist = 0.0; + geographic_point_init(pt.x, pt.y, closest1); + geographic_point_init(pt.x, pt.y, closest2); + return *min_dist; + } + } + /* Polygon on one side, primitive type on the other. Check for point-in-polygon */ + /* short circuit. */ + if ( n2->geom_type == POLYGONTYPE && n1->geom_type && ! lwtype_is_collection(n1->geom_type) ) + { + POINT2D pt; + circ_tree_get_point(n1, &pt); + LWDEBUGF(4, "n2 is polygon, testing if contains (%.5g,%.5g)", pt.x, pt.y); + if ( circ_tree_contains_point(n2, &pt, &(n2->pt_outside), NULL) ) + { + LWDEBUG(4, "it does"); + geographic_point_init(pt.x, pt.y, closest1); + geographic_point_init(pt.x, pt.y, closest2); + *min_dist = 0.0; + return *min_dist; + } + } + /* Both leaf nodes, do a real distance calculation */ - if( circ_node_is_leaf(n1) ) + if( circ_node_is_leaf(n1) && circ_node_is_leaf(n2) ) { - if( circ_node_is_leaf(n2) ) + double d; + GEOGRAPHIC_POINT close1, close2; + LWDEBUGF(4, "testing leaf pair [%d], [%d]", n1->edge_num, n2->edge_num); + /* One of the nodes is a point */ + if ( n1->p1 == n1->p2 || n2->p1 == n2->p2 ) { - double d; - GEOGRAPHIC_POINT close1, close2; - LWDEBUGF(4, "testing leaf pair [%d], [%d]", n1->edge_num, n2->edge_num); - /* One of the nodes is a point */ - if ( n1->p1 == n1->p2 || n2->p1 == n2->p2 ) - { - GEOGRAPHIC_EDGE e; - GEOGRAPHIC_POINT gp1, gp2; + GEOGRAPHIC_EDGE e; + GEOGRAPHIC_POINT gp1, gp2; - /* Both nodes are points! */ - if ( n1->p1 == n1->p2 && n2->p1 == n2->p2 ) - { - geographic_point_init(n1->p1->x, n1->p1->y, &gp1); - geographic_point_init(n2->p1->x, n2->p1->y, &gp2); - close1 = gp1; close2 = gp2; - d = sphere_distance(&gp1, &gp2); - } - /* Node 1 is a point */ - else if ( n1->p1 == n1->p2 ) - { - geographic_point_init(n1->p1->x, n1->p1->y, &gp1); - geographic_point_init(n2->p1->x, n2->p1->y, &(e.start)); - geographic_point_init(n2->p2->x, n2->p2->y, &(e.end)); - close1 = gp1; - d = edge_distance_to_point(&e, &gp1, &close2); - } - /* Node 2 is a point */ - else - { - geographic_point_init(n2->p1->x, n2->p1->y, &gp1); - geographic_point_init(n1->p1->x, n1->p1->y, &(e.start)); - geographic_point_init(n1->p2->x, n1->p2->y, &(e.end)); - close1 = gp1; - d = edge_distance_to_point(&e, &gp1, &close2); - } - LWDEBUGF(4, " got distance %g", d); + /* Both nodes are points! */ + if ( n1->p1 == n1->p2 && n2->p1 == n2->p2 ) + { + geographic_point_init(n1->p1->x, n1->p1->y, &gp1); + geographic_point_init(n2->p1->x, n2->p1->y, &gp2); + close1 = gp1; close2 = gp2; + d = sphere_distance(&gp1, &gp2); + } + /* Node 1 is a point */ + else if ( n1->p1 == n1->p2 ) + { + geographic_point_init(n1->p1->x, n1->p1->y, &gp1); + geographic_point_init(n2->p1->x, n2->p1->y, &(e.start)); + geographic_point_init(n2->p2->x, n2->p2->y, &(e.end)); + close1 = gp1; + d = edge_distance_to_point(&e, &gp1, &close2); } - /* Both nodes are edges */ + /* Node 2 is a point */ else { - GEOGRAPHIC_EDGE e1, e2; - GEOGRAPHIC_POINT g; - POINT3D A1, A2, B1, B2; - geographic_point_init(n1->p1->x, n1->p1->y, &(e1.start)); - geographic_point_init(n1->p2->x, n1->p2->y, &(e1.end)); - geographic_point_init(n2->p1->x, n2->p1->y, &(e2.start)); - geographic_point_init(n2->p2->x, n2->p2->y, &(e2.end)); - geog2cart(&(e1.start), &A1); - geog2cart(&(e1.end), &A2); - geog2cart(&(e2.start), &B1); - geog2cart(&(e2.end), &B2); - if ( edge_intersects(&A1, &A2, &B1, &B2) ) - { - d = 0.0; - edge_intersection(&e1, &e2, &g); - close1 = close2 = g; - } - else - { - d = edge_distance_to_edge(&e1, &e2, &close1, &close2); - } - LWDEBUGF(4, "edge_distance_to_edge returned %g", d); + geographic_point_init(n2->p1->x, n2->p1->y, &gp1); + geographic_point_init(n1->p1->x, n1->p1->y, &(e.start)); + geographic_point_init(n1->p2->x, n1->p2->y, &(e.end)); + close1 = gp1; + d = edge_distance_to_point(&e, &gp1, &close2); } - if ( d < *min_dist ) + LWDEBUGF(4, " got distance %g", d); + } + /* Both nodes are edges */ + else + { + GEOGRAPHIC_EDGE e1, e2; + GEOGRAPHIC_POINT g; + POINT3D A1, A2, B1, B2; + geographic_point_init(n1->p1->x, n1->p1->y, &(e1.start)); + geographic_point_init(n1->p2->x, n1->p2->y, &(e1.end)); + geographic_point_init(n2->p1->x, n2->p1->y, &(e2.start)); + geographic_point_init(n2->p2->x, n2->p2->y, &(e2.end)); + geog2cart(&(e1.start), &A1); + geog2cart(&(e1.end), &A2); + geog2cart(&(e2.start), &B1); + geog2cart(&(e2.end), &B2); + if ( edge_intersects(&A1, &A2, &B1, &B2) ) { - *min_dist = d; - *closest1 = close1; - *closest2 = close2; + d = 0.0; + edge_intersection(&e1, &e2, &g); + close1 = close2 = g; } - return d; + else + { + d = edge_distance_to_edge(&e1, &e2, &close1, &close2); + } + LWDEBUGF(4, "edge_distance_to_edge returned %g", d); } - else + if ( d < *min_dist ) + { + *min_dist = d; + *closest1 = close1; + *closest2 = close2; + } + return d; + } + else + { + d_min = MAXFLOAT; + /* Drive the recursion into the COLLECTION types first so we end up with */ + /* pairings of primitive geometries that can be forced into the point-in-polygon */ + /* tests above. */ + if ( n1->geom_type && lwtype_is_collection(n1->geom_type) ) + { + for ( i = 0; i < n1->num_nodes; i++ ) + { + d = circ_tree_distance_tree_internal(n1->nodes[i], n2, threshold, min_dist, max_dist, closest1, closest2); + d_min = FP_MIN(d_min, d); + } + } + else if ( n2->geom_type && lwtype_is_collection(n2->geom_type) ) { - d_min = MAXFLOAT; for ( i = 0; i < n2->num_nodes; i++ ) { d = circ_tree_distance_tree_internal(n1, n2->nodes[i], threshold, min_dist, max_dist, closest1, closest2); d_min = FP_MIN(d_min, d); } - return d_min; } - } - else - { - d_min = MAXFLOAT; - for ( i = 0; i < n1->num_nodes; i++ ) + else if ( ! circ_node_is_leaf(n1) ) + { + for ( i = 0; i < n1->num_nodes; i++ ) + { + d = circ_tree_distance_tree_internal(n1->nodes[i], n2, threshold, min_dist, max_dist, closest1, closest2); + d_min = FP_MIN(d_min, d); + } + } + else if ( ! circ_node_is_leaf(n2) ) + { + for ( i = 0; i < n2->num_nodes; i++ ) + { + d = circ_tree_distance_tree_internal(n1, n2->nodes[i], threshold, min_dist, max_dist, closest1, closest2); + d_min = FP_MIN(d_min, d); + } + } + else { - d = circ_tree_distance_tree_internal(n2, n1->nodes[i], threshold, min_dist, max_dist, closest1, closest2); - d_min = FP_MIN(d_min, d); + /* Never get here */ } + return d_min; } } + + + void circ_tree_print(const CIRC_NODE* node, int depth) { int i; - - if ( node->num_nodes > 0 ) - { - printf("%*s C(%.5g %.5g) R(%.5g)\n", - 3*depth + 6, "NODE", - node->center.lon, node->center.lat, - node->radius - ); - } - else + + if (circ_node_is_leaf(node)) { - printf("%*s[%d] C(%.5g %.5g) R(%.5g) ((%.5g %.5g),(%.5g,%.5g))\n", + printf("%*s[%d] C(%.5g %.5g) R(%.5g) ((%.5g %.5g),(%.5g,%.5g))", 3*depth + 6, "NODE", node->edge_num, node->center.lon, node->center.lat, node->radius, node->p1->x, node->p1->y, node->p2->x, node->p2->y ); + if ( node->geom_type ) + { + printf(" %s", lwtype_name(node->geom_type)); + } + if ( node->geom_type == POLYGONTYPE ) + { + printf(" O(%.5g %.5g)", node->pt_outside.x, node->pt_outside.y); + } + printf("\n"); + + } + else + { + printf("%*s C(%.5g %.5g) R(%.5g)", + 3*depth + 6, "NODE", + node->center.lon, node->center.lat, + node->radius + ); + if ( node->geom_type ) + { + printf(" %s", lwtype_name(node->geom_type)); + } + if ( node->geom_type == POLYGONTYPE ) + { + printf(" O(%.5g %.5g)", node->pt_outside.x, node->pt_outside.y); + } + printf("\n"); } for ( i = 0; i < node->num_nodes; i++ ) { @@ -668,13 +808,19 @@ static CIRC_NODE* lwpoint_calculate_circ_tree(const LWPOINT* lwpoint) { - return circ_tree_new(lwpoint->point); + CIRC_NODE* node; + node = circ_tree_new(lwpoint->point); + node->geom_type = lwgeom_get_type((LWGEOM*)lwpoint);; + return node; } static CIRC_NODE* lwline_calculate_circ_tree(const LWLINE* lwline) { - return circ_tree_new(lwline->points); + CIRC_NODE* node; + node = circ_tree_new(lwline->points); + node->geom_type = lwgeom_get_type((LWGEOM*)lwline); + return node; } static CIRC_NODE* @@ -686,22 +832,31 @@ /* One ring? Handle it like a line. */ if ( lwpoly->nrings == 1 ) - return circ_tree_new(lwpoly->rings[0]); - - /* Calculate a tree for each non-trivial ring of the polygon */ - nodes = lwalloc(lwpoly->nrings * sizeof(CIRC_NODE*)); - for ( i = 0; i < lwpoly->nrings; i++ ) { - node = circ_tree_new(lwpoly->rings[i]); - if ( node ) - nodes[j++] = node; + node = circ_tree_new(lwpoly->rings[0]); } - /* Put the trees into a spatially correlated order */ - circ_nodes_sort(nodes, j); - /* Merge the trees pairwise up to a parent node and return */ - node = circ_nodes_merge(nodes, j); - /* Don't need the working list any more */ - lwfree(nodes); + else + { + /* Calculate a tree for each non-trivial ring of the polygon */ + nodes = lwalloc(lwpoly->nrings * sizeof(CIRC_NODE*)); + for ( i = 0; i < lwpoly->nrings; i++ ) + { + node = circ_tree_new(lwpoly->rings[i]); + if ( node ) + nodes[j++] = node; + } + /* Put the trees into a spatially correlated order */ + circ_nodes_sort(nodes, j); + /* Merge the trees pairwise up to a parent node and return */ + node = circ_nodes_merge(nodes, j); + /* Don't need the working list any more */ + lwfree(nodes); + } + + /* Metatdata about polygons, we need this to apply P-i-P tests */ + /* selectively when doing distance calculations */ + node->geom_type = lwgeom_get_type((LWGEOM*)lwpoly); + lwpoly_pt_outside(lwpoly, &(node->pt_outside)); return node; } @@ -732,6 +887,8 @@ /* Don't need the working list any more */ lwfree(nodes); + node->geom_type = lwgeom_get_type((LWGEOM*)lwcol); + return node; } diff -Nru postgis-2.1.1/liblwgeom/lwgeodetic_tree.h postgis-2.1.2+dfsg/liblwgeom/lwgeodetic_tree.h --- postgis-2.1.1/liblwgeom/lwgeodetic_tree.h 2012-07-12 03:38:03.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/lwgeodetic_tree.h 2014-03-25 08:17:56.000000000 +0000 @@ -16,6 +16,8 @@ int num_nodes; struct circ_node** nodes; int edge_num; + int geom_type; + POINT2D pt_outside; POINT2D* p1; POINT2D* p2; } CIRC_NODE; @@ -26,5 +28,6 @@ int circ_tree_contains_point(const CIRC_NODE* node, const POINT2D* pt, const POINT2D* pt_outside, int* on_boundary); double circ_tree_distance_tree(const CIRC_NODE* n1, const CIRC_NODE* n2, const SPHEROID *spheroid, double threshold); CIRC_NODE* lwgeom_calculate_circ_tree(const LWGEOM* lwgeom); +int circ_tree_get_point(const CIRC_NODE* node, POINT2D* pt); #endif /* _LWGEODETIC_TREE_H */ \ No newline at end of file diff -Nru postgis-2.1.1/liblwgeom/lwin_geojson.c postgis-2.1.2+dfsg/liblwgeom/lwin_geojson.c --- postgis-2.1.1/liblwgeom/lwin_geojson.c 2013-02-28 17:42:49.000000000 +0000 +++ postgis-2.1.2+dfsg/liblwgeom/lwin_geojson.c 2014-03-26 09:37:44.000000000 +0000 @@ -82,29 +82,19 @@ // Read X coordinate poObjCoord = json_object_array_get_idx( poObj, 0 ); - iType = json_object_get_type(poObjCoord); - if (iType == json_type_double) - pt.x = json_object_get_double( poObjCoord ); - else - pt.x = json_object_get_int( poObjCoord ); + pt.x = json_object_get_double( poObjCoord ); LWDEBUGF(3, "parse_geojson_coord pt.x = %f.", pt.x ); - // Read Y coordiante + // Read Y coordinate poObjCoord = json_object_array_get_idx( poObj, 1 ); - if (iType == json_type_double) - pt.y = json_object_get_double( poObjCoord ); - else - pt.y = json_object_get_int( poObjCoord ); + pt.y = json_object_get_double( poObjCoord ); LWDEBUGF(3, "parse_geojson_coord pt.y = %f.", pt.y ); if( nSize == 3 ) /* should this be >= 3 ? */ { - // Read Z coordiante + // Read Z coordinate poObjCoord = json_object_array_get_idx( poObj, 2 ); - if (iType == 3) - pt.z = json_object_get_double( poObjCoord ); - else - pt.z = json_object_get_int( poObjCoord ); + pt.z = json_object_get_double( poObjCoord ); LWDEBUGF(3, "parse_geojson_coord pt.z = %f.", pt.z ); *hasz = LW_TRUE; } @@ -190,49 +180,59 @@ POINTARRAY **ppa; json_object* rings = NULL; int i = 0, j = 0; - int ring = 0; + int nRings = 0; + int nPoints = 0; rings = findMemberByName( geojson, "coordinates" ); - if ( ! rings ) { + if ( ! rings ) + { geojson_lwerror("Unable to find 'coordinates' in GeoJSON string", 4); - return NULL; - } + return NULL; + } + + if ( json_type_array != json_object_get_type(rings) ) + { + geojson_lwerror("The 'coordinates' in GeoJSON string are not an array", 4); + return NULL; + } + + nRings = json_object_array_length( rings ); + + if ( ! nRings ) + { + return (LWGEOM *)lwpoly_construct_empty(root_srid, 0, 0); + } ppa = (POINTARRAY**) lwalloc(sizeof(POINTARRAY*)); - if( json_type_array == json_object_get_type( rings ) ) + json_object* points = NULL; + ppa[0] = ptarray_construct_empty(1, 0, 1); + points = json_object_array_get_idx( rings, 0 ); + nPoints = json_object_array_length( points ); + + for (i=0; i < nPoints; i++ ) + { + json_object* coords = NULL; + coords = json_object_array_get_idx( points, i ); + parse_geojson_coord(coords, hasz, ppa[0]); + } + + for(i = 1; i < nRings; ++i) { int nPoints; - json_object* points = NULL; - ppa[0] = ptarray_construct_empty(1, 0, 1); - ring = json_object_array_length( rings ); - points = json_object_array_get_idx( rings, 0 ); + ppa = (POINTARRAY**) lwrealloc((POINTARRAY *) ppa, sizeof(POINTARRAY*) * (i + 1)); + ppa[i] = ptarray_construct_empty(1, 0, 1); + points = json_object_array_get_idx( rings, i ); nPoints = json_object_array_length( points ); - - for (i=0; i < nPoints; i++ ) + for (j=0; j < nPoints; j++ ) { json_object* coords = NULL; - coords = json_object_array_get_idx( points, i ); - parse_geojson_coord(coords, hasz, ppa[0]); - } - - for(i = 1; i < ring; ++i) - { - int nPoints; - ppa = (POINTARRAY**) lwrealloc((POINTARRAY *) ppa, sizeof(POINTARRAY*) * (i + 1)); - ppa[i] = ptarray_construct_empty(1, 0, 1); - points = json_object_array_get_idx( rings, i ); - nPoints = json_object_array_length( points ); - for (j=0; j < nPoints; j++ ) - { - json_object* coords = NULL; - coords = json_object_array_get_idx( points, j ); - parse_geojson_coord(coords, hasz, ppa[i]); - } + coords = json_object_array_get_idx( points, j ); + parse_geojson_coord(coords, hasz, ppa[i]); } } - geom = (LWGEOM *) lwpoly_construct(root_srid, NULL, ring, ppa); + geom = (LWGEOM *) lwpoly_construct(root_srid, NULL, nRings, ppa); return geom; } diff -Nru postgis-2.1.1/libtool postgis-2.1.2+dfsg/libtool --- postgis-2.1.1/libtool 2013-11-08 19:46:17.000000000 +0000 +++ postgis-2.1.2+dfsg/libtool 2014-03-29 05:39:50.000000000 +0000 @@ -2,7 +2,7 @@ # libtool - Provide generalized library-building support services. # Generated automatically by config.status () -# Libtool was configured on host Tadpole.local: +# Libtool was configured on host Butterfly.local: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, @@ -66,16 +66,16 @@ # The host system. host_alias= -host=x86_64-apple-darwin10.8.0 -host_os=darwin10.8.0 +host=x86_64-apple-darwin13.1.0 +host_os=darwin13.1.0 # The build system. build_alias= -build=x86_64-apple-darwin10.8.0 -build_os=darwin10.8.0 +build=x86_64-apple-darwin13.1.0 +build_os=darwin13.1.0 # A sed program that does not truncate output. -SED="/opt/local/bin/gsed" +SED="/usr/bin/sed" # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" @@ -272,7 +272,7 @@ hardcode_into_libs=no # Compile-time system search path for libraries. -sys_lib_search_path_spec="/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64 /usr/lib/i686-apple-darwin10/4.2.1 /usr/lib /usr/local/lib" +sys_lib_search_path_spec="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1 /usr/local/lib" # Run-time system search path for libraries. sys_lib_dlsearch_path_spec="/usr/local/lib /lib /usr/lib" @@ -292,7 +292,7 @@ # The linker used to build libraries. -LD="/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld" +LD="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" # How to create reloadable object files. reload_flag=" -r" @@ -308,7 +308,7 @@ with_gcc=yes # Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" +no_builtin_flag=" -fno-builtin -fno-rtti -fno-exceptions" # Additional compiler flags for building library objects. pic_flag=" -fno-common -DPIC" @@ -10091,7 +10091,7 @@ # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. -LD="/usr/libexec/gcc/i686-apple-darwin10/4.2.1/ld" +LD="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" # How to create reloadable object files. reload_flag=" -r" diff -Nru postgis-2.1.1/NEWS postgis-2.1.2+dfsg/NEWS --- postgis-2.1.1/NEWS 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/NEWS 2014-03-28 19:56:24.000000000 +0000 @@ -1,3 +1,42 @@ + +PostGIS 2.1.2 +2014/03/31 + + * Important Changes * + + * Bug Fixes * + + - #2666, Error out at configure time if no SQL preprocessor can be found + - #2534, st_distance returning incorrect results for large geographies + - #2539, Check for json-c/json.h presence/usability before json/json.h + - #2543, invalid join selectivity error from simple query + - #2546, GeoJSON with string coordinates parses incorrectly + - #2547, Fix ST_Simplify(TopoGeometry) for hierarchical topogeoms + - #2552, Fix NULL raster handling in ST_AsPNG, ST_AsTIFF and + ST_AsJPEG + - #2555, Fix parsing issue of range arguments of ST_Reclass + - #2556, geography ST_Intersects results depending on insert order + - #2580, Do not allow installing postgis twice in the same database + - #2589, Remove use of unnecessary void pointers + - #2607, Cannot open more than 1024 out-db files in one process + - #2610, Ensure face splitting algorithm uses the edge index + - #2615, EstimatedExtent (and hence, underlying stats) gathering wrong bbox + - #2619, Empty rings array in GeoJSON polygon causes crash + - #2634, regression in sphere distance code + - #2638, Geography distance on M geometries sometimes wrong + - #2648, #2653, Fix topology functions when "topology" is not in search_path + - #2654, Drop deprecated calls from topology + - #2655, Let users without topology privileges call postgis_full_version() + - #2674, Fix missing operator = and hash_raster_ops opclass on raster + - #2675, #2534, #2636, #2634, #2638, Geography distance issues with tree optimization + + * Enhancements * + + - #2494, avoid memcopy in GiST index (hayamiz) + - #2560, soft upgrade: avoid drop/recreate of aggregates that hadn't changed + + + PostGIS 2.1.1 2013/11/08 @@ -448,6 +487,7 @@ is now a view. - 3D analysis functions are now named with "3D" as a prefix instead of a suffix (eg ST_Length3D has become ST_3DLength) + - Operator && does not check for SRID mismatch anymore * New Features * diff -Nru postgis-2.1.1/postgis/geography_measurement_trees.c postgis-2.1.2+dfsg/postgis/geography_measurement_trees.c --- postgis-2.1.1/postgis/geography_measurement_trees.c 2012-08-17 19:15:57.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/geography_measurement_trees.c 2014-03-25 08:17:56.000000000 +0000 @@ -9,7 +9,7 @@ * liblwgeom, where most of the circtree logic lives. */ typedef struct { - int type; // + int type; // GSERIALIZED* geom1; // GSERIALIZED* geom2; // size_t geom1_size; // @@ -76,16 +76,16 @@ return (CircTreeGeomCache*)GetGeomCache(fcinfo, &CircTreeCacheMethods, g1, g2); } + static int -CircTreePIP(const CIRC_NODE* tree1, const GSERIALIZED* g1, const LWGEOM* lwgeom2) +CircTreePIP(const CIRC_NODE* tree1, const GSERIALIZED* g1, const POINT4D* in_point) { int tree1_type = gserialized_get_type(g1); GBOX gbox1; GEOGRAPHIC_POINT in_gpoint; POINT3D in_point3d; - POINT4D in_point; - POSTGIS_DEBUGF(3, "tree1_type=%d, lwgeom2->type=%d", tree1_type, lwgeom2->type); + POSTGIS_DEBUGF(3, "tree1_type=%d", tree1_type); /* If the tree'ed argument is a polygon, do the P-i-P using the tree-based P-i-P */ if ( tree1_type == POLYGONTYPE || tree1_type == MULTIPOLYGONTYPE ) @@ -99,17 +99,9 @@ lwgeom_calculate_gbox_geodetic(lwgeom1, &gbox1); lwgeom_free(lwgeom1); } - - /* Need one point from the candidate geometry */ - if ( LW_FAILURE == lwgeom_startpoint(lwgeom2, &in_point) ) - { - lwerror("CircTreePIP unable to generate start point for lwgeom %p", lwgeom2); - POSTGIS_DEBUG(3, "unable to generate in_point, CircTreePIP returning FALSE"); - return LW_FALSE; - } - + /* Flip the candidate point into geographics */ - geographic_point_init(in_point.x, in_point.y, &in_gpoint); + geographic_point_init(in_point->x, in_point->y, &in_gpoint); geog2cart(&in_gpoint, &in_point3d); /* If the candidate isn't in the tree box, it's not in the tree area */ @@ -123,8 +115,8 @@ { POINT2D pt2d_outside; /* latlon */ POINT2D pt2d_inside; - pt2d_inside.x = in_point.x; - pt2d_inside.y = in_point.y; + pt2d_inside.x = in_point->x; + pt2d_inside.y = in_point->y; /* Calculate a definitive outside point */ gbox_pt_outside(&gbox1, &pt2d_outside); POSTGIS_DEBUGF(3, "p2d_inside=POINT(%g %g) p2d_outside=POINT(%g %g)", pt2d_inside.x, pt2d_inside.y, pt2d_outside.x, pt2d_outside.y); @@ -133,81 +125,95 @@ return circ_tree_contains_point(tree1, &pt2d_inside, &pt2d_outside, NULL); } } - /* If the un-tree'd argument is a polygon and the tree'd argument isn't, we need to do a */ - /* standard P-i-P on the un-tree'd side. */ - else if ( lwgeom2->type == POLYGONTYPE || lwgeom2->type == MULTIPOLYGONTYPE ) - { - int result; - LWGEOM* lwgeom1 = lwgeom_from_gserialized(g1); - LWGEOM* lwpoint; - POINT4D p4d; - POSTGIS_DEBUG(3, "tree1 not polygonal, but lwgeom2 is, calculating using lwgeom_covers_lwgeom_sphere"); - - if ( LW_FAILURE == lwgeom_startpoint(lwgeom1, &p4d) ) - { - lwgeom_free(lwgeom1); - lwerror("CircTreePIP unable to get lwgeom_startpoint"); - return LW_FALSE; - } - lwpoint = lwpoint_as_lwgeom(lwpoint_make(lwgeom_get_srid(lwgeom1), lwgeom_has_z(lwgeom1), lwgeom_has_m(lwgeom1), &p4d)); - result = lwgeom_covers_lwgeom_sphere(lwgeom2, lwpoint); - lwgeom_free(lwgeom1); - lwgeom_free(lwpoint); - return result; - } else { - POSTGIS_DEBUG(3, "neither tree1 nor lwgeom2 polygonal, so CircTreePIP returning FALSE"); + POSTGIS_DEBUG(3, "tree1 not polygonal, so CircTreePIP returning FALSE"); return LW_FALSE; } } -int -geography_distance_cache(FunctionCallInfoData* fcinfo, const GSERIALIZED* g1, const GSERIALIZED* g2, const SPHEROID* s, double* distance) + +static int +geography_distance_cache_tolerance(FunctionCallInfoData* fcinfo, const GSERIALIZED* g1, const GSERIALIZED* g2, const SPHEROID* s, double tolerance, double* distance) { CircTreeGeomCache* tree_cache = NULL; + + int type1 = gserialized_get_type(g1); + int type2 = gserialized_get_type(g2); Assert(distance); /* Two points? Get outa here... */ - if ( (gserialized_get_type(g1) == POINTTYPE) && (gserialized_get_type(g2) == POINTTYPE) ) + if ( type1 == POINTTYPE && type2 == POINTTYPE ) return LW_FAILURE; /* Fetch/build our cache, if appropriate, etc... */ tree_cache = GetCircTreeGeomCache(fcinfo, g1, g2); - if ( tree_cache && tree_cache->argnum && tree_cache->index ) + /* OK, we have an index at the ready! Use it for the one tree argument and */ + /* fill in the other tree argument */ + if ( tree_cache && tree_cache->argnum && tree_cache->index ) { - CIRC_NODE* circ_tree = NULL; - const GSERIALIZED* g = NULL; + CIRC_NODE* circtree_cached = tree_cache->index; + CIRC_NODE* circtree = NULL; + const GSERIALIZED* g_cached; + const GSERIALIZED* g; LWGEOM* lwgeom = NULL; - + int geomtype_cached; + int geomtype; + POINT4D p4d; + /* We need to dynamically build a tree for the uncached side of the function call */ if ( tree_cache->argnum == 1 ) { - lwgeom = lwgeom_from_gserialized(g2); - g = g1; + g_cached = g1; + g = g2; + geomtype_cached = type1; + geomtype = type2; } else if ( tree_cache->argnum == 2 ) { - lwgeom = lwgeom_from_gserialized(g1); - g = g2; + g_cached = g2; + g = g1; + geomtype_cached = type2; + geomtype = type1; } else - lwerror("geography_distance_cache failed! This will never happen!"); - - if ( LW_TRUE == CircTreePIP(tree_cache->index, g, lwgeom) ) { - *distance = 0.0; - lwgeom_free(lwgeom); - return LW_SUCCESS; + lwerror("geography_distance_cache this cannot happen!"); + return LW_FAILURE; + } + + lwgeom = lwgeom_from_gserialized(g); + if ( geomtype_cached == POLYGONTYPE || geomtype_cached == MULTIPOLYGONTYPE ) + { + lwgeom_startpoint(lwgeom, &p4d); + if ( CircTreePIP(circtree_cached, g_cached, &p4d) ) + { + *distance = 0.0; + lwgeom_free(lwgeom); + return LW_SUCCESS; + } } - /* We do tree/tree distance, so turn the candidate geometry into a tree */ - circ_tree = lwgeom_calculate_circ_tree(lwgeom); - /* Calculate tree/tree distance */ - *distance = circ_tree_distance_tree(tree_cache->index, circ_tree, s, FP_TOLERANCE); - circ_tree_free(circ_tree); + circtree = lwgeom_calculate_circ_tree(lwgeom); + if ( geomtype == POLYGONTYPE || geomtype == MULTIPOLYGONTYPE ) + { + POINT2D p2d; + circ_tree_get_point(circtree_cached, &p2d); + p4d.x = p2d.x; + p4d.y = p2d.y; + if ( CircTreePIP(circtree, g, &p4d) ) + { + *distance = 0.0; + circ_tree_free(circtree); + lwgeom_free(lwgeom); + return LW_SUCCESS; + } + } + + *distance = circ_tree_distance_tree(circtree_cached, circtree, s, tolerance); + circ_tree_free(circtree); lwgeom_free(lwgeom); return LW_SUCCESS; } @@ -217,65 +223,27 @@ } } + +int +geography_distance_cache(FunctionCallInfoData* fcinfo, const GSERIALIZED* g1, const GSERIALIZED* g2, const SPHEROID* s, double* distance) +{ + return geography_distance_cache_tolerance(fcinfo, g1, g2, s, FP_TOLERANCE, distance); +} + int geography_dwithin_cache(FunctionCallInfoData* fcinfo, const GSERIALIZED* g1, const GSERIALIZED* g2, const SPHEROID* s, double tolerance, int* dwithin) { - CircTreeGeomCache* tree_cache = NULL; double distance; - - Assert(dwithin); - - /* Two points? Get outa here... */ - if ( (gserialized_get_type(g1) == POINTTYPE) && (gserialized_get_type(g2) == POINTTYPE) ) - return LW_FAILURE; - - /* Fetch/build our cache, if appropriate, etc... */ - tree_cache = GetCircTreeGeomCache(fcinfo, g1, g2); - - if ( tree_cache && tree_cache->argnum && tree_cache->index ) + /* TODO!!! Why does the tolerance stopper in the circ_tree_distance_tree_internal arbitrarily screw up? */ +/* if ( LW_SUCCESS == geography_distance_cache_tolerance(fcinfo, g1, g2, s, tolerance, &distance) ) */ + if ( LW_SUCCESS == geography_distance_cache_tolerance(fcinfo, g1, g2, s, FP_TOLERANCE, &distance) ) { - CIRC_NODE* circ_tree = NULL; - const GSERIALIZED* g = NULL; - LWGEOM* lwgeom = NULL; - - /* We need to dynamically build a tree for the uncached side of the function call */ - if ( tree_cache->argnum == 1 ) - { - lwgeom = lwgeom_from_gserialized(g2); - g = g1; - } - else if ( tree_cache->argnum == 2 ) - { - lwgeom = lwgeom_from_gserialized(g1); - g = g2; - } - else - lwerror("geography_dwithin_cache failed! This will never happen!"); - - if ( LW_TRUE == CircTreePIP(tree_cache->index, g, lwgeom) ) - { - *dwithin = LW_TRUE; - lwgeom_free(lwgeom); - return LW_SUCCESS; - } - - /* We do tree/tree distance, so turn the candidate geometry into a tree */ - circ_tree = lwgeom_calculate_circ_tree(lwgeom); - /* Calculate tree/tree distance */ - distance = circ_tree_distance_tree(tree_cache->index, circ_tree, s, tolerance); - *dwithin = (distance <= tolerance ? LW_TRUE : LW_FALSE); - circ_tree_free(circ_tree); - lwgeom_free(lwgeom); + *dwithin = (distance <= (tolerance + FP_TOLERANCE) ? LW_TRUE : LW_FALSE); return LW_SUCCESS; } - else - { - return LW_FAILURE; - } - + return LW_FAILURE; } - - + int geography_tree_distance(const GSERIALIZED* g1, const GSERIALIZED* g2, const SPHEROID* s, double tolerance, double* distance) { @@ -283,13 +251,16 @@ CIRC_NODE* circ_tree2 = NULL; LWGEOM* lwgeom1 = NULL; LWGEOM* lwgeom2 = NULL; + POINT4D pt1, pt2; lwgeom1 = lwgeom_from_gserialized(g1); lwgeom2 = lwgeom_from_gserialized(g2); circ_tree1 = lwgeom_calculate_circ_tree(lwgeom1); circ_tree2 = lwgeom_calculate_circ_tree(lwgeom2); + lwgeom_startpoint(lwgeom1, &pt1); + lwgeom_startpoint(lwgeom2, &pt2); - if ( CircTreePIP(circ_tree1, g1, lwgeom2) || CircTreePIP(circ_tree2, g2, lwgeom1) ) + if ( CircTreePIP(circ_tree1, g1, &pt2) || CircTreePIP(circ_tree2, g2, &pt1) ) { *distance = 0.0; } diff -Nru postgis-2.1.1/postgis/gserialized_estimate.c postgis-2.1.2+dfsg/postgis/gserialized_estimate.c --- postgis-2.1.1/postgis/gserialized_estimate.c 2013-06-03 17:45:21.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/gserialized_estimate.c 2014-02-25 17:54:37.000000000 +0000 @@ -497,7 +497,7 @@ for ( d = 0; d < ND_DIMS; d++ ) { a->min[d] = FLT_MAX; - a->max[d] = FLT_MIN; + a->max[d] = -1 * FLT_MAX; } return TRUE; } @@ -753,16 +753,18 @@ /* How dispersed is the distribution of features across bins? */ range = range_quintile(counts, num_bins); + #if POSTGIS_DEBUG_LEVEL >= 3 average = avg(counts, num_bins); sdev = stddev(counts, num_bins); sdev_ratio = sdev/average; -#endif - + POSTGIS_DEBUGF(3, " dimension %d: range = %d", d, range); POSTGIS_DEBUGF(3, " dimension %d: average = %.6g", d, average); POSTGIS_DEBUGF(3, " dimension %d: stddev = %.6g", d, sdev); POSTGIS_DEBUGF(3, " dimension %d: stddev_ratio = %.6g", d, sdev_ratio); +#endif + distribution[d] = range; } @@ -1074,6 +1076,10 @@ * number of rows that can be returned. */ selectivity = val / ntuples_max; + + /* Guard against over-estimates :) */ + if ( selectivity > 1.0 ) + selectivity = 1.0; return selectivity; } diff -Nru postgis-2.1.1/postgis/gserialized_gist_2d.c postgis-2.1.2+dfsg/postgis/gserialized_gist_2d.c --- postgis-2.1.1/postgis/gserialized_gist_2d.c 2013-11-04 23:17:11.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/gserialized_gist_2d.c 2013-11-20 00:17:02.000000000 +0000 @@ -530,7 +530,15 @@ ** The most info we need is the 8 bytes of serialized header plus the ** of floats necessary to hold the bounding box. */ - gpart = (GSERIALIZED*)PG_DETOAST_DATUM_SLICE(gsdatum, 0, 8 + sizeof(BOX2DF)); + if (VARATT_IS_EXTENDED(gsdatum)) + { + gpart = (GSERIALIZED*)PG_DETOAST_DATUM_SLICE(gsdatum, 0, 8 + sizeof(BOX2DF)); + } + else + { + gpart = (GSERIALIZED*)PG_DETOAST_DATUM(gsdatum); + } + flags = gpart->flags; POSTGIS_DEBUGF(4, "got flags %d", gpart->flags); diff -Nru postgis-2.1.1/postgis/lwgeom_in_gml.c postgis-2.1.2+dfsg/postgis/lwgeom_in_gml.c --- postgis-2.1.1/postgis/lwgeom_in_gml.c 2012-11-29 22:33:21.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/lwgeom_in_gml.c 2014-03-26 10:20:53.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: lwgeom_in_gml.c 10767 2012-11-29 22:33:21Z colivier $ + * $Id: lwgeom_in_gml.c 12362 2014-03-26 10:20:53Z colivier $ * * PostGIS - Spatial Types for PostgreSQL * http://postgis.refractions.net @@ -1335,6 +1335,10 @@ } } + /* Interior but no Exterior ! */ + if ( ! ppa ) + gml_lwerror("invalid GML representation", 48); + /* PolygonPatch/interior */ for (ring=1, xa = xnode->children ; xa != NULL ; xa = xa->next) { diff -Nru postgis-2.1.1/postgis/postgis.sql.in postgis-2.1.2+dfsg/postgis/postgis.sql.in --- postgis-2.1.1/postgis/postgis.sql.in 2013-11-06 16:32:54.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/postgis.sql.in 2014-02-24 10:25:07.000000000 +0000 @@ -1,6 +1,6 @@ -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- --- $Id: postgis.sql.in 12102 2013-11-06 16:32:54Z strk $ +-- $Id: postgis.sql.in 12272 2014-02-24 10:25:07Z strk $ -- -- PostGIS - Spatial Types for PostgreSQL -- http://postgis.refractions.net @@ -27,6 +27,22 @@ BEGIN; +-- Check that no other postgis is installed +DO $$ +DECLARE + rec RECORD; +BEGIN + FOR rec IN + SELECT n.nspname, p.proname FROM pg_proc p, pg_namespace n + WHERE p.proname = 'postgis_version' + AND p.pronamespace = n.oid + LOOP + RAISE EXCEPTION 'PostGIS is already installed in schema ''%'', uninstall it first', rec.nspname; + END LOOP; +END +$$ LANGUAGE 'plpgsql'; + + -- Let the user know about a deprecated signature and its new name, if any CREATE OR REPLACE FUNCTION _postgis_deprecate(oldname text, newname text, version text) RETURNS void AS @@ -2577,6 +2593,10 @@ WHEN undefined_function OR invalid_schema_name THEN topo_scr_ver := NULL; RAISE NOTICE 'Function postgis_topology_scripts_installed() not found. Is topology support enabled and topology.sql installed?'; + WHEN insufficient_privilege THEN + RAISE NOTICE 'Topology support cannot be inspected. Is current user granted USAGE on schema "topology" ?'; + WHEN OTHERS THEN + RAISE NOTICE 'Function postgis_topology_scripts_installed() could not be called: % (%)', SQLERRM, SQLSTATE; END; BEGIN diff -Nru postgis-2.1.1/postgis/sqldefines.h postgis-2.1.2+dfsg/postgis/sqldefines.h --- postgis-2.1.1/postgis/sqldefines.h 2013-11-08 19:46:15.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis/sqldefines.h 2014-03-29 05:39:49.000000000 +0000 @@ -9,7 +9,7 @@ #define POSTGIS_PGSQL_VERSION 92 #define POSTGIS_GEOS_VERSION 34 #define POSTGIS_PROJ_VERSION 48 -#define POSTGIS_LIB_VERSION '2.1.1' +#define POSTGIS_LIB_VERSION '2.1.2' #define POSTGIS_LIBXML2_VERSION 2.9.0 /* @@ -18,12 +18,12 @@ * won't substitute within apostrophes) */ #define _POSTGIS_SQL_SELECT_POSTGIS_VERSION 'SELECT ''2.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1''::text AS version' -#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''2013-11-08 19:46:11''::text AS version' +#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''2014-03-29 05:39:47''::text AS version' #if POSTGIS_SVN_REVISION -#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.1'::text || ' r' || POSTGIS_SVN_REVISION::text AS version $$ +#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.2'::text || ' r' || POSTGIS_SVN_REVISION::text AS version $$ #else -#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.1'::text AS version $$ +#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.2'::text AS version $$ #endif #define SRID_USR_MAX 998999 diff -Nru postgis-2.1.1/postgis_svn_revision.h postgis-2.1.2+dfsg/postgis_svn_revision.h --- postgis-2.1.1/postgis_svn_revision.h 2013-11-08 19:46:17.000000000 +0000 +++ postgis-2.1.2+dfsg/postgis_svn_revision.h 2014-03-29 05:39:54.000000000 +0000 @@ -1 +1 @@ -#define POSTGIS_SVN_REVISION 12113 +#define POSTGIS_SVN_REVISION 12389 diff -Nru postgis-2.1.1/raster/doc/RFC1-SerializedFormat postgis-2.1.2+dfsg/raster/doc/RFC1-SerializedFormat --- postgis-2.1.1/raster/doc/RFC1-SerializedFormat 2011-01-24 15:06:02.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/doc/RFC1-SerializedFormat 2011-01-24 15:06:02.000000000 +0000 @@ -1,7 +1,7 @@ RFC1: serialized format (storage) for RASTER type ------------------------------------------------------ $Author: jorgearevalo $ -$Date: 2011-01-24 07:06:02 -0800 (Mon, 24 Jan 2011) $ +$Date: 2011-01-24 16:06:02 +0100 (Mon, 24 Jan 2011) $ $Revision: 6716 $ ------------------------------------------------------ diff -Nru postgis-2.1.1/raster/doc/RFC2-WellKnownBinaryFormat postgis-2.1.2+dfsg/raster/doc/RFC2-WellKnownBinaryFormat --- postgis-2.1.1/raster/doc/RFC2-WellKnownBinaryFormat 2011-06-23 23:50:13.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/doc/RFC2-WellKnownBinaryFormat 2011-06-23 23:50:13.000000000 +0000 @@ -1,7 +1,7 @@ RFC2: Well Known Binary format for RASTER type ---------------------------------------------- $Author: chodgson $ -$Date: 2011-06-23 16:50:13 -0700 (Thu, 23 Jun 2011) $ +$Date: 2011-06-24 01:50:13 +0200 (Fri, 24 Jun 2011) $ $Revision: 7461 $ ------------------------------------------------------ diff -Nru postgis-2.1.1/raster/rt_core/rt_api.c postgis-2.1.2+dfsg/raster/rt_core/rt_api.c --- postgis-2.1.1/raster/rt_core/rt_api.c 2013-10-28 19:44:03.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/rt_core/rt_api.c 2014-01-17 03:46:18.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: rt_api.c 12060 2013-10-28 19:44:03Z dustymugs $ + * $Id: rt_api.c 12186 2014-01-17 03:46:18Z dustymugs $ * * WKTRaster - Raster Types for PostGIS * http://trac.osgeo.org/postgis/wiki/WKTRaster @@ -1795,7 +1795,10 @@ } rt_util_gdal_register_all(); - hdsSrc = GDALOpenShared(band->data.offline.path, GA_ReadOnly); + /* + hdsSrc = GDALOpenShared(band->data.offline.path, GA_ReadOnly); + */ + hdsSrc = GDALOpen(band->data.offline.path, GA_ReadOnly); if (hdsSrc == NULL) { rterror("rt_band_load_offline_data: Cannot open offline raster: %s", band->data.offline.path); return ES_ERROR; @@ -1891,6 +1894,7 @@ GDALClose(hdsDst); /* XXX: need to find a way to clean up the GDALOpenShared datasets at end of transaction */ /* GDALClose(hdsSrc); */ + GDALClose(hdsSrc); if (_rast == NULL) { rterror("rt_band_load_offline_data: Cannot load data from offline raster: %s", band->data.offline.path); @@ -9351,9 +9355,9 @@ int nXValid, nYValid; int iY; - void *values = NULL; + uint8_t *values = NULL; uint32_t valueslen = 0; - void *ptr = NULL; + uint8_t *ptr = NULL; assert(NULL != ds); @@ -9477,34 +9481,7 @@ /* allocate memory for values */ valueslen = ptlen * nXBlockSize * nYBlockSize; - switch (gdpixtype) { - case GDT_Byte: - values = (uint8_t *) rtalloc(valueslen); - break; - case GDT_UInt16: - values = (uint16_t *) rtalloc(valueslen); - break; - case GDT_Int16: - values = (int16_t *) rtalloc(valueslen); - break; - case GDT_UInt32: - values = (uint32_t *) rtalloc(valueslen); - break; - case GDT_Int32: - values = (int32_t *) rtalloc(valueslen); - break; - case GDT_Float32: - values = (float *) rtalloc(valueslen); - break; - case GDT_Float64: - values = (double *) rtalloc(valueslen); - break; - default: - /* should NEVER get here */ - rterror("rt_raster_from_gdal_dataset: Could not allocate memory for unknown pixel type"); - rt_raster_destroy(rast); - return NULL; - } + values = rtalloc(valueslen); if (values == NULL) { rterror("rt_raster_from_gdal_dataset: Could not allocate memory for GDAL band pixel values"); rt_raster_destroy(rast); diff -Nru postgis-2.1.1/raster/rt_core/rt_api.h postgis-2.1.2+dfsg/raster/rt_core/rt_api.h --- postgis-2.1.1/raster/rt_core/rt_api.h 2013-10-28 19:44:03.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/rt_core/rt_api.h 2014-03-22 05:29:54.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: rt_api.h 12060 2013-10-28 19:44:03Z dustymugs $ + * $Id: rt_api.h 12336 2014-03-22 05:29:54Z robe $ * * WKTRaster - Raster Types for PostGIS * http://www.postgis.org/support/wiki/index.php?WKTRasterHomePage @@ -42,7 +42,7 @@ #endif -#if defined(__FreeBSD__) || defined(__OpenBSD__) /* seems to work like Linux... */ +#if defined(__FreeBSD_kernel__) || defined(__OpenBSD__) /* seems to work like Linux... */ #if !defined(LINUX) #define LINUX #endif diff -Nru postgis-2.1.1/raster/rt_pg/Makefile.in postgis-2.1.2+dfsg/raster/rt_pg/Makefile.in --- postgis-2.1.1/raster/rt_pg/Makefile.in 2013-10-28 19:44:03.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/rt_pg/Makefile.in 2014-03-25 13:35:16.000000000 +0000 @@ -1,5 +1,5 @@ ############################################################################# -# $Id: Makefile.in 12060 2013-10-28 19:44:03Z dustymugs $ +# $Id: Makefile.in 12349 2014-03-25 13:35:16Z strk $ # # Copyright (c) 2009-2011 Sandro Santilli # @@ -111,15 +111,15 @@ $(SQL_OBJS): ../../postgis/sqldefines.h ../../postgis_svn_revision.h #remove all create object types since these can't be done cleanly in an upgrade -rtpostgis_upgrade.sql: rtpostgis.sql - $(PERL) -0777 -ne 's/^(CREATE|ALTER) (CAST|OPERATOR|TYPE|TABLE|SCHEMA|DOMAIN|TRIGGER).*?;//msg;print;' $< > $@ +rtpostgis_upgrade.sql: rtpostgis.sql ../../utils/postgis_proc_upgrade.pl + $(PERL) ../../utils/postgis_proc_upgrade.pl $< 2.0 > $@ + #$(PERL) -0777 -ne 's/^(CREATE|ALTER) (CAST|OPERATOR|TYPE|TABLE|SCHEMA|DOMAIN|TRIGGER).*?;//msg;print;' $< > $@ rtpostgis_upgrade_20_21.sql: rtpostgis_upgrade_cleanup.sql rtpostgis_drop.sql rtpostgis_upgrade.sql cat $^ > $@ -# same as 20_21 until 2.1.0 is released -rtpostgis_upgrade_21_minor.sql: rtpostgis_upgrade_cleanup.sql rtpostgis_drop.sql rtpostgis_upgrade.sql - cat $^ > $@ +rtpostgis_upgrade_21_minor.sql: rtpostgis.sql ../../utils/postgis_proc_upgrade.pl + $(PERL) ../../utils/postgis_proc_upgrade.pl rtpostgis.sql 2.1 > $@ uninstall_rtpostgis.sql: rtpostgis.sql ../../utils/create_undef.pl $(PERL) ../../utils/create_undef.pl $< $(POSTGIS_PGSQL_VERSION) > $@ diff -Nru postgis-2.1.1/raster/rt_pg/rt_pg.c postgis-2.1.2+dfsg/raster/rt_pg/rt_pg.c --- postgis-2.1.1/raster/rt_pg/rt_pg.c 2013-10-28 19:44:03.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/rt_pg/rt_pg.c 2013-12-07 14:41:24.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: rt_pg.c 12060 2013-10-28 19:44:03Z dustymugs $ + * $Id: rt_pg.c 12153 2013-12-07 14:41:24Z dustymugs $ * * WKTRaster - Raster Types for PostGIS * http://www.postgis.org/support/wiki/index.php?WKTRasterHomePage @@ -617,6 +617,27 @@ return rtn; } +/* +* reverse string search function from +* http://stackoverflow.com/a/1634398 +*/ +static char * +rtpg_strrstr(const char *s1, const char *s2) { + int s1len = strlen(s1); + int s2len = strlen(s2); + char *s; + + if (s2len > s1len) + return NULL; + + s = (char *) (s1 + s1len - s2len); + for (; s >= s1; --s) + if (strncmp(s, s2, s2len) == 0) + return s; + + return NULL; +} + static char* rtpg_getSR(int srid) { @@ -10297,7 +10318,7 @@ PG_RETURN_NULL(); } numBands = rt_raster_get_num_bands(raster); - POSTGIS_RT_DEBUGF(3, "RASTER_reclass: %d possible bands to be reclassified", n); + POSTGIS_RT_DEBUGF(3, "RASTER_reclass: %d possible bands to be reclassified", numBands); /* process set of reclassarg */ POSTGIS_RT_DEBUG(3, "RASTER_reclass: Processing Arg 1 (reclassargset)"); @@ -10589,7 +10610,10 @@ POSTGIS_RT_DEBUGF(5, "RASTER_reclass: min/max (double) %f", val); /* strsplit removes dash (a.k.a. negative sign), compare now to restore */ - junk = strstr(colon_set[b], dash_set[c]); + if (c < 1) + junk = strstr(colon_set[b], dash_set[c]); + else + junk = rtpg_strrstr(colon_set[b], dash_set[c]); /* not beginning of string */ if (junk != colon_set[b]) { /* prior is a dash */ diff -Nru postgis-2.1.1/raster/rt_pg/rtpostgis.sql.in postgis-2.1.2+dfsg/raster/rt_pg/rtpostgis.sql.in --- postgis-2.1.1/raster/rt_pg/rtpostgis.sql.in 2013-11-07 14:57:04.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/rt_pg/rtpostgis.sql.in 2014-03-22 04:29:45.000000000 +0000 @@ -36,6 +36,8 @@ SET client_min_messages TO warning; +-- INSTALL VERSION: POSTGIS_LIB_VERSION + BEGIN; ------------------------------------------------------------------------------ @@ -1746,6 +1748,10 @@ nodata double precision; last_nodata double precision; BEGIN + IF rast IS NULL THEN + RETURN NULL; + END IF; + num_bands := st_numbands($1); -- TIFF only allows one NODATA value for ALL bands @@ -1780,6 +1786,10 @@ num_bands int; options text[]; BEGIN + IF rast IS NULL THEN + RETURN NULL; + END IF; + compression2 := trim(both from upper(compression)); IF length(compression2) > 0 THEN @@ -1867,6 +1877,10 @@ num_bands int; i int; BEGIN + IF rast IS NULL THEN + RETURN NULL; + END IF; + num_bands := st_numbands($1); -- JPEG allows 1 or 3 bands @@ -1942,6 +1956,10 @@ i int; pt text; BEGIN + IF rast IS NULL THEN + RETURN NULL; + END IF; + num_bands := st_numbands($1); -- PNG allows 1, 3 or 4 bands @@ -5432,23 +5450,27 @@ ------------------------------------------------------------------- -- call PostgreSQL's hashvarlena() function +-- Availability: 2.1.0 CREATE OR REPLACE FUNCTION raster_hash(raster) RETURNS integer AS 'hashvarlena' LANGUAGE 'internal' IMMUTABLE STRICT; -- use raster_hash() to compare +-- Availability: 2.1.0 CREATE OR REPLACE FUNCTION raster_eq(raster, raster) RETURNS bool AS $$ SELECT raster_hash($1) = raster_hash($2) $$ LANGUAGE 'sql' IMMUTABLE STRICT; +-- Availability: 2.1.0 CREATE OPERATOR = ( LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_eq, COMMUTATOR = '=', RESTRICT = eqsel, JOIN = eqjoinsel ); +-- Availability: 2.1.0 CREATE OPERATOR CLASS hash_raster_ops DEFAULT FOR TYPE raster USING hash AS OPERATOR 1 = , @@ -5629,7 +5651,7 @@ -- raster/geometry operators CREATE OPERATOR ~ ( LEFTARG = raster, RIGHTARG = geometry, PROCEDURE = raster_geometry_contain, - COMMUTATOR = '@', + -- COMMUTATOR = '@', -- see http://trac.osgeo.org/postgis/ticket/2532 RESTRICT = contsel, JOIN = contjoinsel ); @@ -5648,7 +5670,7 @@ -- geometry/raster operators CREATE OPERATOR ~ ( LEFTARG = geometry, RIGHTARG = raster, PROCEDURE = geometry_raster_contain, - COMMUTATOR = '@', + -- COMMUTATOR = '@', -- see http://trac.osgeo.org/postgis/ticket/2532 RESTRICT = contsel, JOIN = contjoinsel ); @@ -5722,6 +5744,7 @@ AS $$ SELECT $1.aligned $$ LANGUAGE 'sql' IMMUTABLE STRICT; +-- Availability: 2.1.0 CREATE AGGREGATE st_samealignment(raster) ( SFUNC = _st_samealignment_transfn, STYPE = agg_samealignment, @@ -6427,6 +6450,7 @@ AS 'MODULE_PATHNAME', 'RASTER_union_transfn' LANGUAGE 'c' IMMUTABLE; +-- Availability: 2.1.0 CREATE AGGREGATE st_union(raster, unionarg[]) ( SFUNC = _st_union_transfn, STYPE = internal, @@ -6438,6 +6462,8 @@ AS 'MODULE_PATHNAME', 'RASTER_union_transfn' LANGUAGE 'c' IMMUTABLE; +-- Availability: 2.0.0 +-- Changed: 2.1.0 changed definition CREATE AGGREGATE st_union(raster, integer, text) ( SFUNC = _st_union_transfn, STYPE = internal, @@ -6449,6 +6475,8 @@ AS 'MODULE_PATHNAME', 'RASTER_union_transfn' LANGUAGE 'c' IMMUTABLE; +-- Availability: 2.0.0 +-- Changed: 2.1.0 changed definition CREATE AGGREGATE st_union(raster, integer) ( SFUNC = _st_union_transfn, STYPE = internal, @@ -6460,6 +6488,8 @@ AS 'MODULE_PATHNAME', 'RASTER_union_transfn' LANGUAGE 'c' IMMUTABLE; +-- Availability: 2.0.0 +-- Changed: 2.1.0 changed definition CREATE AGGREGATE st_union(raster) ( SFUNC = _st_union_transfn, STYPE = internal, @@ -6471,6 +6501,8 @@ AS 'MODULE_PATHNAME', 'RASTER_union_transfn' LANGUAGE 'c' IMMUTABLE; +-- Availability: 2.0.0 +-- Changed: 2.1.0 changed definition CREATE AGGREGATE st_union(raster, text) ( SFUNC = _st_union_transfn, STYPE = internal, diff -Nru postgis-2.1.1/raster/test/regress/rt_asjpeg_expected postgis-2.1.2+dfsg/raster/test/regress/rt_asjpeg_expected --- postgis-2.1.1/raster/test/regress/rt_asjpeg_expected 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_asjpeg_expected 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,4 @@ +t ERROR: The pixel type of band 1 in the raster is not 8BUI. The JPEG format can only be used with the 8BUI pixel type. 1 ERROR: The pixel type of band 1 in the raster is not 8BUI. The JPEG format can only be used with the 8BUI pixel type. diff -Nru postgis-2.1.1/raster/test/regress/rt_asjpeg.sql postgis-2.1.2+dfsg/raster/test/regress/rt_asjpeg.sql --- postgis-2.1.1/raster/test/regress/rt_asjpeg.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_asjpeg.sql 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,4 @@ +SELECT ST_AsJPEG(NULL) IS NULL; SELECT CASE WHEN length( ST_AsJPEG( diff -Nru postgis-2.1.1/raster/test/regress/rt_aspng_expected postgis-2.1.2+dfsg/raster/test/regress/rt_aspng_expected --- postgis-2.1.1/raster/test/regress/rt_aspng_expected 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_aspng_expected 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,4 @@ +t ERROR: The pixel type of band 1 in the raster is not 8BUI or 16BUI. The PNG format can only be used with 8BUI and 16BUI pixel types. 1 ERROR: The pixel type of band 1 in the raster is not 8BUI or 16BUI. The PNG format can only be used with 8BUI and 16BUI pixel types. diff -Nru postgis-2.1.1/raster/test/regress/rt_aspng.sql postgis-2.1.2+dfsg/raster/test/regress/rt_aspng.sql --- postgis-2.1.1/raster/test/regress/rt_aspng.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_aspng.sql 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,4 @@ +SELECT ST_AsPNG(NULL) IS NULL; SELECT CASE WHEN length( ST_AsPNG( diff -Nru postgis-2.1.1/raster/test/regress/rt_astiff_expected postgis-2.1.2+dfsg/raster/test/regress/rt_astiff_expected --- postgis-2.1.1/raster/test/regress/rt_astiff_expected 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_astiff_expected 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,5 @@ +t +t 1 1 1 diff -Nru postgis-2.1.1/raster/test/regress/rt_astiff.sql postgis-2.1.2+dfsg/raster/test/regress/rt_astiff.sql --- postgis-2.1.1/raster/test/regress/rt_astiff.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_astiff.sql 2013-11-27 16:03:50.000000000 +0000 @@ -1,3 +1,5 @@ +SELECT ST_AsTIFF(NULL) IS NULL; +SELECT ST_AsTIFF(NULL, 'JPEG') IS NULL; SELECT CASE WHEN length( ST_AsTIFF( diff -Nru postgis-2.1.1/raster/test/regress/rt_reclass_expected postgis-2.1.2+dfsg/raster/test/regress/rt_reclass_expected --- postgis-2.1.1/raster/test/regress/rt_reclass_expected 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_reclass_expected 2013-12-07 14:41:24.000000000 +0000 @@ -8,3 +8,4 @@ 3.1415901184082|2.71828007698059|0 NOTICE: Invalid argument for reclassargset. Invalid band index (must use 1-based) for reclassarg of index 0 . Returning original raster 3.1415901184082|2.71828007698059|0 +900|-900|900 diff -Nru postgis-2.1.1/raster/test/regress/rt_reclass.sql postgis-2.1.2+dfsg/raster/test/regress/rt_reclass.sql --- postgis-2.1.1/raster/test/regress/rt_reclass.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/raster/test/regress/rt_reclass.sql 2013-12-07 14:41:24.000000000 +0000 @@ -168,3 +168,28 @@ ROW(2, '-10000--100]:50-1,(-100-1000]:150-50,(1000-10000]:254-150', '8BUI', 0) ) AS rast ) AS t; + +-- ticket #2555 +SELECT + ST_Value(rast, 1, 2, 2), + ST_Value(rast, 1, 3, 3), + ST_Value(rast, 1, 4, 4) +FROM ( + SELECT ST_Reclass( + ST_SetValues( + ST_AddBand( + ST_MakeEmptyRaster(5, 5, 10, 10, 2, 2, 0, 0, 0), + 1, '32BF', 1, -9999 + ), + 1, 1, 1, + ARRAY[ + [1, 1, 1, 1, 1], + [1, 9000, 1, 1, 1], + [1, 1, -9000, 1, 1], + [1, 1, 1, 9000, 1], + [1, 1, 1, 1, 1] + ]::double precision[] + ), + 1, '[-9000-9000]:[-900-900]', '32BF' + ) AS rast +) AS t; diff -Nru postgis-2.1.1/README.postgis postgis-2.1.2+dfsg/README.postgis --- postgis-2.1.1/README.postgis 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/README.postgis 2014-03-29 05:31:01.000000000 +0000 @@ -1,8 +1,8 @@ PostGIS - Geographic Information Systems Extensions to PostgreSQL ================================================================= -:Version: 2.1.1 -:Date: 2013-11-08 +:Version: 2.1.2 +:Date: 2014-03-31 :Website: http://postgis.net This distribution contains a module which implements GIS simple features, ties diff -Nru postgis-2.1.1/regress/empty.sql postgis-2.1.2+dfsg/regress/empty.sql --- postgis-2.1.1/regress/empty.sql 2013-09-24 21:57:57.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/empty.sql 2014-02-05 05:25:34.000000000 +0000 @@ -123,14 +123,14 @@ WITH inp AS (SELECT 'POLYGON EMPTY'::geometry as empty, 1 as n - ) SELECT 'ST_GeometryN(empty, n) == empty', ST_GeometryN(empty, n) FROM inp; + ) SELECT 'ST_GeometryN(empty, n) == empty', encode(ST_AsEWKB(ST_GeometryN(empty, n),'ndr'),'hex') FROM inp; WITH inp AS (SELECT 'POLYGON EMPTY'::geometry as empty - ) SELECT 'ST_ExteriorRing(empty) == empty', ST_ExteriorRing(empty) FROM inp; + ) SELECT 'ST_ExteriorRing(empty) == empty', encode(ST_AsEWKB(ST_ExteriorRing(empty),'ndr'),'hex') FROM inp; WITH inp AS (SELECT 'POLYGON EMPTY'::geometry as empty, 1 as n - ) SELECT 'ST_InteriorRingN(empty, n) == NULL', ST_InteriorRingN(empty, n) FROM inp; + ) SELECT 'ST_InteriorRingN(empty, n) == NULL', encode(ST_AsEWKB(ST_InteriorRingN(empty, n),'ndr'),'hex') FROM inp; WITH inp AS (SELECT 'POLYGON EMPTY'::geometry as empty ) SELECT 'ST_Area(empty) == 0', ST_Area(empty) FROM inp; diff -Nru postgis-2.1.1/regress/in_geojson_expected postgis-2.1.2+dfsg/regress/in_geojson_expected --- postgis-2.1.1/regress/in_geojson_expected 2013-02-28 17:56:27.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/in_geojson_expected 2014-03-26 09:22:54.000000000 +0000 @@ -9,3 +9,4 @@ ERROR: unexpected character (at offset 0) #2130|8 #2216|30 +#2619|POLYGON EMPTY diff -Nru postgis-2.1.1/regress/in_geojson.sql postgis-2.1.2+dfsg/regress/in_geojson.sql --- postgis-2.1.1/regress/in_geojson.sql 2013-02-28 17:56:27.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/in_geojson.sql 2014-03-26 09:22:54.000000000 +0000 @@ -16,3 +16,6 @@ -- #2216 -- SELECT '#2216', ST_NPoints(ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[4,0],[0,-4],[-4,0],[0,4],[4,0]],[[2,0],[0,2],[-2,0],[0,-2],[2,0]]],[[[24,0],[20,-4],[16,0],[20,4],[24,0]],[[22,0],[20,2],[18,0],[20,-2],[22,0]]],[[[44,0],[40,-4],[36,0],[40,4],[44,0]],[[42,0],[40,2],[38,0],[40,-2],[42,0]]]]}')); + +-- #2619 -- +SELECT '#2619', ST_AsText(ST_GeomFromGeoJSON('{"type":"Polygon","bbox":[1,5,2,6],"coordinates":[]}')); \ No newline at end of file diff -Nru postgis-2.1.1/regress/in_gml_expected postgis-2.1.2+dfsg/regress/in_gml_expected --- postgis-2.1.1/regress/in_gml_expected 2012-10-01 09:28:46.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/in_gml_expected 2014-03-26 10:20:53.000000000 +0000 @@ -88,6 +88,7 @@ ERROR: invalid GML representation surface_21|POLYGON((1 2,3 4,5 6,1 2)) ERROR: invalid GML representation +ERROR: invalid GML representation mpoint_1|MULTIPOINT(1 2) mpoint_2|MULTIPOINT(1 2,3 4) mpoint_3|SRID=4326;MULTIPOINT(1 2) diff -Nru postgis-2.1.1/regress/in_gml.sql postgis-2.1.2+dfsg/regress/in_gml.sql --- postgis-2.1.1/regress/in_gml.sql 2012-10-01 09:28:46.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/in_gml.sql 2014-03-26 10:20:53.000000000 +0000 @@ -301,6 +301,8 @@ -- ERROR: interpolation not planar SELECT 'surface_22', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); +-- ERROR: interior but no exterior +SELECT 'surface_23', ST_AsEWKT(ST_GeomFromGML('1,2 3,4 5,6 1,2')); -- diff -Nru postgis-2.1.1/regress/legacy.sql postgis-2.1.2+dfsg/regress/legacy.sql --- postgis-2.1.1/regress/legacy.sql 2012-11-25 22:36:15.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/legacy.sql 2014-03-28 20:11:50.000000000 +0000 @@ -8,8 +8,10 @@ SET client_min_messages TO WARNING; -\i 00-regress-install/share/contrib/postgis/legacy.sql +\cd :scriptdir +\i legacy.sql +TRUNCATE spatial_ref_sys; INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (4326,'EPSG',4326,'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.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '); SELECT 'Starting up MapServer/Geoserver tests...'; @@ -54,4 +56,4 @@ DELETE FROM spatial_ref_sys WHERE SRID = '4326'; -\i 00-regress-install/share/contrib/postgis/uninstall_legacy.sql +\i uninstall_legacy.sql diff -Nru postgis-2.1.1/regress/loader/ReprojectPts-pre.sql postgis-2.1.2+dfsg/regress/loader/ReprojectPts-pre.sql --- postgis-2.1.1/regress/loader/ReprojectPts-pre.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/loader/ReprojectPts-pre.sql 2014-03-28 13:04:12.000000000 +0000 @@ -1,3 +1,5 @@ +--- In case this test is running in an extension context +TRUNCATE spatial_ref_sys; --- --- EPSG 4326 : WGS 84 --- diff -Nru postgis-2.1.1/regress/regress_ogc.sql postgis-2.1.2+dfsg/regress/regress_ogc.sql --- postgis-2.1.1/regress/regress_ogc.sql 2013-09-04 04:37:58.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/regress_ogc.sql 2014-03-28 13:04:12.000000000 +0000 @@ -4,98 +4,98 @@ --- -- Repeat all tests with new function names. SET client_min_messages TO NOTICE; -SELECT 'buffer', ST_astext(ST_SnapToGrid(ST_buffer('POINT(0 0)', 1, 2), 1.0e-6)); +SELECT 'buffer', ST_astext(ST_SnapToGrid(ST_buffer('POINT(0 0)'::geometry, 1, 2), 1.0e-6)); -SELECT 'geomunion', ST_astext(ST_union('POINT(0 0)', 'POINT(1 1)')); -SELECT 'convexhull', ST_asewkt(ST_convexhull('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))')); -SELECT 'relate', ST_relate('POINT(0 0)', 'LINESTRING(0 0, 1 1)'); -SELECT 'relate', ST_relate('POINT(0 0)', 'LINESTRING(0 0, 1 1)', 'F0FFFF*02'); -SELECT 'relate', ST_relate('POINT(0 0)', 'LINESTRING(0 0, 1 1)', 'F0FFF0*02'); -SELECT 'disjoint', ST_disjoint('POINT(0 0)', 'LINESTRING(0 0, 1 1)'); -SELECT 'touches', ST_touches('LINESTRING(0 10, 0 -10)', 'LINESTRING(0 0, 1 1)'); -SELECT 'intersects', ST_intersects('LINESTRING(0 10, 0 -10)', 'LINESTRING(0 0, 1 1)'); -SELECT 'crosses', ST_crosses('LINESTRING(0 10, 0 -10)', 'LINESTRING(0 0, 1 1)'); -SELECT 'crosses', ST_crosses('LINESTRING(0 10, 0 -10)', 'LINESTRING(-4 0, 1 1)'); +SELECT 'geomunion', ST_astext(ST_union('POINT(0 0)'::geometry, 'POINT(1 1)'::geometry)); +SELECT 'convexhull', ST_asewkt(ST_convexhull('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'::geometry)); +SELECT 'relate', ST_relate('POINT(0 0)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry); +SELECT 'relate', ST_relate('POINT(0 0)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry, 'F0FFFF*02'); +SELECT 'relate', ST_relate('POINT(0 0)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry, 'F0FFF0*02'); +SELECT 'disjoint', ST_disjoint('POINT(0 0)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry); +SELECT 'touches', ST_touches('LINESTRING(0 10, 0 -10)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry); +SELECT 'intersects', ST_intersects('LINESTRING(0 10, 0 -10)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry); +SELECT 'crosses', ST_crosses('LINESTRING(0 10, 0 -10)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry); +SELECT 'crosses', ST_crosses('LINESTRING(0 10, 0 -10)'::geometry, 'LINESTRING(-4 0, 1 1)'::geometry); -- PIP - point within polygon -SELECT 'within100', ST_within('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'within100', ST_within('POINT(5 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on vertex of polygon -SELECT 'within101', ST_within('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'within101', ST_within('POINT(0 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point outside polygon -SELECT 'within102', ST_within('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'within102', ST_within('POINT(-1 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on edge of polygon -SELECT 'within103', ST_within('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'within103', ST_within('POINT(0 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point in line with polygon edge -SELECT 'within104', ST_within('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'within104', ST_within('POINT(0 12)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'within105', ST_within(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - repeated vertex SELECT 'within106', ST_within(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - point within polygon -SELECT 'disjoint100', ST_disjoint('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint100', ST_disjoint('POINT(5 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon vertex -SELECT 'disjoint101', ST_disjoint('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint101', ST_disjoint('POINT(0 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point outside polygon -SELECT 'disjoint102', ST_disjoint('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint102', ST_disjoint('POINT(-1 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon edge -SELECT 'disjoint103', ST_disjoint('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint103', ST_disjoint('POINT(0 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point in line with polygon edge -SELECT 'disjoint104', ST_disjoint('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint104', ST_disjoint('POINT(0 12)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'disjoint105', ST_disjoint(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - repeated vertex SELECT 'disjoint106', ST_disjoint(ST_GeomFromText('POINT(521543 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - point within polygon -SELECT 'disjoint150', ST_disjoint('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint150', ST_disjoint('POINT(5 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon vertex -SELECT 'disjoint151', ST_disjoint('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint151', ST_disjoint('POINT(0 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point outside polygon -SELECT 'disjoint152', ST_disjoint('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint152', ST_disjoint('POINT(-1 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon edge -SELECT 'disjoint153', ST_disjoint('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint153', ST_disjoint('POINT(0 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point in line with polygon edge -SELECT 'disjoint154', ST_disjoint('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'disjoint154', ST_disjoint('POINT(0 12)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'disjoint155', ST_disjoint(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - repeated vertex SELECT 'disjoint156', ST_disjoint(ST_GeomFromText('POINT(521543 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - point within polygon -SELECT 'intersects100', ST_intersects('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects100', ST_intersects('POINT(5 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon vertex -SELECT 'intersects101', ST_intersects('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects101', ST_intersects('POINT(0 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point outside polygon -SELECT 'intersects102', ST_intersects('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects102', ST_intersects('POINT(-1 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon edge -SELECT 'intersects103', ST_intersects('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects103', ST_intersects('POINT(0 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point in line with polygon edge -SELECT 'intersects104', ST_intersects('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects104', ST_intersects('POINT(0 12)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'intersects105', ST_intersects(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - repeated vertex SELECT 'intersects106', ST_intersects(ST_GeomFromText('POINT(521543 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - point within polygon -SELECT 'intersects150', ST_intersects('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects150', ST_intersects('POINT(5 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon vertex -SELECT 'intersects151', ST_intersects('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects151', ST_intersects('POINT(0 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point outside polygon -SELECT 'intersects152', ST_intersects('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects152', ST_intersects('POINT(-1 0)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point on polygon edge -SELECT 'intersects153', ST_intersects('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects153', ST_intersects('POINT(0 5)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point in line with polygon edge -SELECT 'intersects154', ST_intersects('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); +SELECT 'intersects154', ST_intersects('POINT(0 12)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'intersects155', ST_intersects(ST_GeomFromText('POINT(521513 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - repeated vertex SELECT 'intersects156', ST_intersects(ST_GeomFromText('POINT(521543 5377804)', 32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631)); -- PIP - point within polygon -SELECT 'contains100', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'); +SELECT 'contains100', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'POINT(5 5)'::geometry); -- PIP - point on vertex of polygon -SELECT 'contains101', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(0 0)'); +SELECT 'contains101', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'POINT(0 0)'::geometry); -- PIP - point outside polygon -SELECT 'contains102', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(-1 0)'); +SELECT 'contains102', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'POINT(-1 0)'::geometry); -- PIP - point on edge of polygon -SELECT 'contains103', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(0 5)'); +SELECT 'contains103', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'POINT(0 5)'::geometry); -- PIP - point in line with polygon edge -SELECT 'contains104', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(0 12)'); +SELECT 'contains104', ST_contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'POINT(0 12)'::geometry); -- PIP - point vertically aligned with polygon vertex SELECT 'contains105', ST_contains(ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631), ST_GeomFromText('POINT(521513 5377804)', 32631)); -- PIP - repeated vertex @@ -103,25 +103,25 @@ -- moved here from regress.sql select 'within119', ST_within('LINESTRING(-1 -1, -1 101, 101 101, 101 -1)'::GEOMETRY,'BOX3D(0 0, 100 100)'::BOX3D); select 'within120', ST_within('LINESTRING(-1 -1, -1 100, 101 100, 101 -1)'::GEOMETRY,'BOX3D(0 0, 100 100)'::BOX3D); -SELECT 'contains110', ST_Contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'LINESTRING(1 10, 9 10, 9 8)'); -SELECT 'contains111', ST_Contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'LINESTRING(1 10, 10 10, 10 8)'); -SELECT 'within130', ST_Within('LINESTRING(1 10, 9 10, 9 8)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); -SELECT 'within131', ST_Within('LINESTRING(1 10, 10 10, 10 8)', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); -SELECT 'overlaps', ST_overlaps('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))','POINT(5 5)'); -SELECT 'isvalid', ST_isvalid('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'); -SELECT 'isvalid', ST_isvalid('POLYGON((0 0, 0 10, 10 10, -5 10, 10 0, 0 0))'); -SELECT 'isvalid', ST_isvalid('GEOMETRYCOLLECTION EMPTY'); -SELECT 'intersection', ST_astext(ST_intersection('LINESTRING(0 10, 0 -10)', 'LINESTRING(0 0, 1 1)')); +SELECT 'contains110', ST_Contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'LINESTRING(1 10, 9 10, 9 8)'::geometry); +SELECT 'contains111', ST_Contains('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry, 'LINESTRING(1 10, 10 10, 10 8)'::geometry); +SELECT 'within130', ST_Within('LINESTRING(1 10, 9 10, 9 8)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); +SELECT 'within131', ST_Within('LINESTRING(1 10, 10 10, 10 8)'::geometry, 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); +SELECT 'overlaps', ST_overlaps('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry,'POINT(5 5)'::geometry); +SELECT 'isvalid', ST_isvalid('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'::geometry); +SELECT 'isvalid', ST_isvalid('POLYGON((0 0, 0 10, 10 10, -5 10, 10 0, 0 0))'::geometry); +SELECT 'isvalid', ST_isvalid('GEOMETRYCOLLECTION EMPTY'::geometry); +SELECT 'intersection', ST_astext(ST_intersection('LINESTRING(0 10, 0 -10)'::geometry, 'LINESTRING(0 0, 1 1)'::geometry)); SELECT 'difference', ST_astext(ST_difference('LINESTRING(0 10, 0 -10)'::GEOMETRY, 'LINESTRING(0 2, 0 -2)'::GEOMETRY)); -SELECT 'boundary', ST_astext(ST_boundary('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))')); -SELECT 'symdifference', ST_astext(ST_symdifference('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))', 'LINESTRING(0 0, 20 20)')); -SELECT 'issimple', ST_issimple('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'); -SELECT 'equals', ST_equals('LINESTRING(0 0, 1 1)', 'LINESTRING(1 1, 0 0)'); +SELECT 'boundary', ST_astext(ST_boundary('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'::geometry)); +SELECT 'symdifference', ST_astext(ST_symdifference('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'::geometry, 'LINESTRING(0 0, 20 20)'::geometry)); +SELECT 'issimple', ST_issimple('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'::geometry); +SELECT 'equals', ST_equals('LINESTRING(0 0, 1 1)'::geometry, 'LINESTRING(1 1, 0 0)'::geometry); WITH inp AS ( SELECT 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))' ::geometry as g ) SELECT 'pointonsurface', ST_Contains(g, ST_pointonsurface(g)) from inp; -SELECT 'centroid', ST_astext(ST_centroid('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))')); +SELECT 'centroid', ST_astext(ST_centroid('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(2 2, 2 4, 4 4, 4 2, 2 2))'::geometry)); SELECT 'exteriorring', ST_astext(ST_exteriorring(ST_PolygonFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))'))); SELECT 'polygonize_garray', ST_astext(ST_polygonize('{0102000000020000000000000000000000000000000000000000000000000024400000000000000000:0102000000020000000000000000002440000000000000000000000000000000000000000000000000:0102000000020000000000000000002440000000000000244000000000000000000000000000000000:0102000000020000000000000000002440000000000000244000000000000024400000000000000000:0102000000020000000000000000002440000000000000244000000000000000000000000000002440:0102000000020000000000000000000000000000000000244000000000000000000000000000002440:0102000000020000000000000000000000000000000000244000000000000024400000000000002440:0102000000020000000000000000000000000000000000244000000000000000000000000000000000:0102000000020000000000000000000000000000000000244000000000000024400000000000000000}'::geometry[])); @@ -138,14 +138,14 @@ select 'ST_GeometryN', ST_asewkt(ST_GeometryN('LINESTRING(0 0, 1 1)'::geometry, 1)); select 'ST_NumGeometries', ST_NumGeometries('LINESTRING(0 0, 1 1)'::geometry); select 'ST_Union1', ST_AsText(ST_Union(ARRAY['POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::geometry, 'POLYGON((0.5 0.5, 1.5 0.5, 1.5 1.5, 0.5 1.5, 0.5 0.5))'::geometry])); -select 'ST_StartPoint1',ST_AsText(ST_StartPoint('LINESTRING(0 0, 1 1, 2 2)')); -select 'ST_EndPoint1', ST_AsText(ST_Endpoint('LINESTRING(0 0, 1 1, 2 2)')); -select 'ST_PointN1', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)',2)); -select 'ST_PointN2', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)',3)); -select 'ST_PointN3', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)',4)); -select 'ST_PointN4', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)',0)); -select 'ST_PointN5', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)',1)); -select 'ST_PointN6', ST_AsText(ST_PointN('POLYGON((0 0, 1 1, 0 1, 0 0))',1)); +select 'ST_StartPoint1',ST_AsText(ST_StartPoint('LINESTRING(0 0, 1 1, 2 2)'::geometry)); +select 'ST_EndPoint1', ST_AsText(ST_Endpoint('LINESTRING(0 0, 1 1, 2 2)'::geometry)); +select 'ST_PointN1', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)'::geometry,2)); +select 'ST_PointN2', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)'::geometry,3)); +select 'ST_PointN3', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)'::geometry,4)); +select 'ST_PointN4', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)'::geometry,0)); +select 'ST_PointN5', ST_AsText(ST_PointN('LINESTRING(0 0, 1 1, 2 2)'::geometry,1)); +select 'ST_PointN6', ST_AsText(ST_PointN('POLYGON((0 0, 1 1, 0 1, 0 0))'::geometry,1)); -- issues with EMPTY -- -select 'ST_Buffer(empty)', ST_AsText(ST_Buffer('POLYGON EMPTY', 0.5)); +select 'ST_Buffer(empty)', ST_AsText(ST_Buffer('POLYGON EMPTY'::geometry, 0.5)); diff -Nru postgis-2.1.1/regress/regress_proj.sql postgis-2.1.2+dfsg/regress/regress_proj.sql --- postgis-2.1.1/regress/regress_proj.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/regress_proj.sql 2014-03-28 13:04:12.000000000 +0000 @@ -10,7 +10,7 @@ -- Repeat all tests with the new function names. --- test #0: NULL values -SELECT 0,coalesce(ST_AsText(ST_transform(NULL, 100001)),'EMPTY'); +SELECT 0,coalesce(ST_AsText(ST_transform(NULL::geometry, 100001)),'EMPTY'); --- test #1: a simple projection SELECT 1,ST_AsEWKT(ST_SnapToGrid(ST_transform(ST_GeomFromEWKT('SRID=100002;POINT(16 48)'),100001),10)); diff -Nru postgis-2.1.1/regress/run_test.pl postgis-2.1.2+dfsg/regress/run_test.pl --- postgis-2.1.1/regress/run_test.pl 2013-10-07 17:55:53.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/run_test.pl 2014-03-28 22:10:49.000000000 +0000 @@ -200,16 +200,6 @@ } } -if ( $OPT_UPGRADE ) -{ - upgrade_spatial(); -} - - -################################################################## -# Report PostGIS environment -################################################################## - my $libver = sql("select postgis_lib_version()"); if ( ! $libver ) @@ -220,6 +210,24 @@ exit(1); } + +if ( $OPT_UPGRADE ) +{ + if ( $OPT_EXTENSIONS ) + { + upgrade_spatial_extensions(); + } + else + { + upgrade_spatial(); + } +} + + +################################################################## +# Report PostGIS environment +################################################################## + my $geosver = sql("select postgis_geos_version()"); my $projver = sql("select postgis_proj_version()"); my $svnrev = sql("select postgis_svn_version()"); @@ -540,7 +548,21 @@ mkpath($betmpdir); chmod 0777, $betmpdir; - my $cmd = "psql -v \"VERBOSITY=terse\" -v \"tmpfile='$tmpfile'\" -tXA $DB < $sql > $outfile 2>&1"; + my $scriptdir; + if ( $OPT_EXTENSIONS ) { + # TODO: allow override this default with env variable ? + my $pgis_majmin = $libver; + $pgis_majmin =~ s/^([1-9]*\.[1-9]*).*/\1/; + $scriptdir = `pg_config --sharedir`; + chop $scriptdir; + $scriptdir .= "/contrib/postgis-" . $pgis_majmin; + } else { + $scriptdir = $STAGED_SCRIPTS_DIR; + } + my $cmd = "psql -v \"VERBOSITY=terse\"" + . " -v \"tmpfile='$tmpfile'\"" + . " -v \"scriptdir=$scriptdir\"" + . " -tXA $DB < $sql > $outfile 2>&1"; my $rv = system($cmd); # Check for ERROR lines @@ -1111,6 +1133,29 @@ return 1; } +# Upgrade an existing database (soft upgrade, extension method) +sub upgrade_spatial_extensions +{ + print "Upgrading PostGIS in '${DB}' using 'ALTER EXTENSION'\n" ; + + # ON_ERROR_STOP is used by psql to return non-0 on an error + my $psql_opts = "--no-psqlrc --variable ON_ERROR_STOP=true"; + my $cmd = "psql $psql_opts -c \"ALTER EXTENSION postgis UPDATE TO '${libver}next'\" $DB >> $REGRESS_LOG 2>&1"; + my $rv = system($cmd); + die "\nError encountered altering EXTENSION POSTGIS, see $REGRESS_LOG for details\n\n" + if $rv; + + if ( $OPT_WITH_TOPO ) + { + my $cmd = "psql $psql_opts -c \"ALTER EXTENSION postgis_topology UPDATE TO '${libver}next'\" $DB >> $REGRESS_LOG 2>&1"; + my $rv = system($cmd); + die "\nError encountered altering EXTENSION POSTGIS_TOPOLOGY, see $REGRESS_LOG for details\n\n" + if $rv; + } + + return 1; +} + sub drop_spatial { my $ok = 1; diff -Nru postgis-2.1.1/regress/sql-mm-curvepoly_expected postgis-2.1.2+dfsg/regress/sql-mm-curvepoly_expected --- postgis-2.1.1/regress/sql-mm-curvepoly_expected 2013-09-24 21:57:57.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/sql-mm-curvepoly_expected 2014-02-05 05:25:34.000000000 +0000 @@ -89,7 +89,7 @@ valid ewkb curve polygon 3|CURVEPOLYGON(CIRCULARSTRING(143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768)) valid ewkb curve polygon 4|CURVEPOLYGON(CIRCULARSTRING(143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768),(144.843993552527 -31.2612392402209,144.205519526017 -32.2721564488616,145.552307128906 -33.4920387268066,147.970809936523 -32.0361862182617,146.386972449926 -31.4740639157242,144.843993552527 -31.2612392402209)) valid ewkb curve polygon 5|CURVEPOLYGON((143.620251668383 -30.0374973560768,142.928571472997 -32.751011968744,145.961323098919 -34.9856710615288,149.575653076172 -33.4115333557129,149.419724075848 -29.8246726805735,146.120941605547 -30.1971158627043,143.620251668383 -30.0374973560768),COMPOUNDCURVE(CIRCULARSTRING(144.843993552527 -31.2612392402209,144.205519526017 -32.2721564488616,145.552307128906 -33.4920387268066),(145.552307128906 -33.4920387268066,147.970809936523 -32.0361862182617),CIRCULARSTRING(147.970809936523 -32.0361862182617,146.386972449926 -31.4740639157242,144.843993552527 -31.2612392402209))) -valid curve 6|010A0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F +valid curve 6|010a0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000f03f00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000f03f000000000000104000000000000000000000000000000000010800000003000000333333333333fb3f000000000000f03f666666666666f63f9a9999999999d93f333333333333fb3f000000000000f03f ERROR: geometry requires more points -valid curve 8|010A0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000020000000000000000001040000000000000084000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F +valid curve 8|010a0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000f03f00000000000000400000000000000840000000000000104000000000000008400102000000020000000000000000001040000000000000084000000000000000000000000000000000010800000003000000333333333333fb3f000000000000f03f666666666666f63f9a9999999999d93f333333333333fb3f000000000000f03f null response| diff -Nru postgis-2.1.1/regress/sql-mm-curvepoly.sql postgis-2.1.2+dfsg/regress/sql-mm-curvepoly.sql --- postgis-2.1.1/regress/sql-mm-curvepoly.sql 2013-09-24 21:57:57.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/sql-mm-curvepoly.sql 2014-02-05 05:25:34.000000000 +0000 @@ -336,7 +336,7 @@ SELECT 'valid ewkb curve polygon 3', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000001000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); SELECT 'valid ewkb curve polygon 4', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); SELECT 'valid ewkb curve polygon 5', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00109000000030000000108000000030000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c001020000000200000000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c0010800000003000000000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); -SELECT 'valid curve 6', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); -SELECT 'valid curve 7', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1) )'); -SELECT 'valid curve 8', ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'); +SELECT 'valid curve 6', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); +SELECT 'valid curve 7', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); +SELECT 'valid curve 8', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); SELECT 'null response', ST_NumPoints(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )')); diff -Nru postgis-2.1.1/regress/tickets_expected postgis-2.1.2+dfsg/regress/tickets_expected --- postgis-2.1.1/regress/tickets_expected 2013-10-18 20:57:30.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/tickets_expected 2014-02-04 19:31:42.000000000 +0000 @@ -253,3 +253,5 @@ #2424|MULTILINESTRING((0 0,10 0,24 3,30 10)) #2427|POINT(-1 0) #2168|5340.76237395|5340.76237395|0 +#2556|47409|20623 +#2556|1|0 diff -Nru postgis-2.1.1/regress/tickets.sql postgis-2.1.2+dfsg/regress/tickets.sql --- postgis-2.1.1/regress/tickets.sql 2013-10-11 01:48:12.000000000 +0000 +++ postgis-2.1.2+dfsg/regress/tickets.sql 2014-02-23 16:32:15.000000000 +0000 @@ -52,7 +52,7 @@ ) AS v(g1, g2); -- #58 -- -SELECT '#58', round(ST_xmin(g)),round(ST_ymin(g)),round(ST_xmax(g)),round(ST_ymax(g)) FROM (SELECT ST_Envelope('CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)') as g) AS foo; +SELECT '#58', round(ST_xmin(g)),round(ST_ymin(g)),round(ST_xmax(g)),round(ST_ymax(g)) FROM (SELECT ST_Envelope('CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)'::geometry) as g) AS foo; -- #65 -- SELECT '#65', ST_AsGML(ST_GeometryFromText('CURVEPOLYGON(CIRCULARSTRING(4 2,3 -1.0,1 -1,-1.0 4,4 2))')); @@ -602,7 +602,7 @@ -- #1150 insert into spatial_ref_sys (srid, proj4text) values (500001,NULL); insert into spatial_ref_sys (srid, proj4text) values (500002, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'); -select '#1150', st_astext(st_transform('SRID=500002;POINT(0 0)',500001)); +select '#1150', st_astext(st_transform('SRID=500002;POINT(0 0)'::geometry,500001)); -- #1038 select '#1038', ST_AsSVG('POLYGON EMPTY'::geometry); @@ -850,5 +850,14 @@ FROM (SELECT 'POINT(18.5107234 54.7587757)'::geography As g1, 'POINT(18.58218 54.7344227)'::geography As g2) As a; +-- #2556 -- + +CREATE TABLE images (id integer, name varchar, extent geography(POLYGON,4326)); +INSERT INTO images VALUES (47409, 'TDX-1_2010-10-06T19_44_2375085', 'SRID=4326;POLYGON((-59.4139571913088 82.9486103943668,-57.3528882462655 83.1123152898828,-50.2302874208478 81.3740574826097,-51.977353304689 81.2431047148532,-59.4139571913088 82.9486103943668))'::geography); +INSERT INTO images VALUES (1, 'first_image', 'SRID=4326;POLYGON((-162.211667 88.046667,-151.190278 87.248889,-44.266389 74.887778,-40.793889 75.043333,-162.211667 88.046667))'::geography); +SELECT '#2556' AS ticket, id, round(ST_Distance(extent, 'SRID=4326;POLYGON((-46.625977 81.634149,-46.625977 81.348076,-48.999023 81.348076,-48.999023 81.634149,-46.625977 81.634149))'::geography)) from images; +DROP TABLE images; + + -- Clean up DELETE FROM spatial_ref_sys; diff -Nru postgis-2.1.1/topology/sql/export/TopoJSON.sql.in postgis-2.1.2+dfsg/topology/sql/export/TopoJSON.sql.in --- postgis-2.1.1/topology/sql/export/TopoJSON.sql.in 2013-03-22 12:34:34.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/sql/export/TopoJSON.sql.in 2014-02-24 06:41:11.000000000 +0000 @@ -119,7 +119,7 @@ EXECUTE 'SET search_path TO ' || quote_ident(toponame) || ',' || old_search_path; SELECT array_agg(id) as f - FROM ( SELECT (GetTopoGeomElements(tg))[1] as id ) as f + FROM ( SELECT (topology.GetTopoGeomElements(tg))[1] as id ) as f INTO all_faces; #ifdef POSTGIS_TOPOLOGY_DEBUG diff -Nru postgis-2.1.1/topology/sql/populate.sql.in postgis-2.1.2+dfsg/topology/sql/populate.sql.in --- postgis-2.1.1/topology/sql/populate.sql.in 2013-05-22 20:24:12.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/sql/populate.sql.in 2014-03-10 18:46:50.000000000 +0000 @@ -138,7 +138,7 @@ || ', ST_EndPoint(geom))' LOOP IF allowEdgeSplitting THEN - RETURN ST_ModEdgeSplit(atopology, rec.edge_id, apoint); + RETURN topology.ST_ModEdgeSplit(atopology, rec.edge_id, apoint); ELSE RAISE EXCEPTION 'An edge crosses the given node.'; END IF; @@ -783,7 +783,7 @@ RAISE WARNING 'Edge within % distance from node still does not contain the node after snapping to it with tolerance %', tol, snaptol; END IF; #endif - PERFORM ST_ChangeEdgeGeom(atopology, rec.edge_id, snapedge); + PERFORM topology.ST_ChangeEdgeGeom(atopology, rec.edge_id, snapedge); END IF; id := topology.ST_ModEdgeSplit(atopology, rec.edge_id, prj); ELSE @@ -1056,7 +1056,7 @@ -- 3. Find faces covered by input polygon -- NOTE: potential snapping changed polygon edges - sql := 'SELECT DISTINCT f.face_id FROM ' || quote_ident(atopology) + sql := 'SELECT f.face_id FROM ' || quote_ident(atopology) || '.face f WHERE f.mbr && ' || quote_literal(apoly::text) || '::geometry'; @@ -1065,7 +1065,7 @@ #endif FOR rec IN EXECUTE sql LOOP -- check for actual containment - fgeom := ST_PointOnSurface(ST_GetFaceGeometry(atopology, rec.face_id)); + fgeom := ST_PointOnSurface(topology.ST_GetFaceGeometry(atopology, rec.face_id)); IF NOT ST_Covers(apoly, fgeom) THEN #ifdef POSTGIS_TOPOLOGY_DEBUG RAISE DEBUG 'Face % not covered by input polygon', rec.face_id; diff -Nru postgis-2.1.1/topology/sql/sqlmm.sql.in postgis-2.1.2+dfsg/topology/sql/sqlmm.sql.in --- postgis-2.1.1/topology/sql/sqlmm.sql.in 2013-03-20 17:38:58.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/sql/sqlmm.sql.in 2014-02-24 07:08:08.000000000 +0000 @@ -57,7 +57,7 @@ RAISE EXCEPTION 'SQL/MM Spatial exception - null argument'; END IF; - IF NOT EXISTS(SELECT name FROM topology WHERE name = toponame) THEN + IF NOT EXISTS(SELECT name FROM topology.topology WHERE name = toponame) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - invalid topology name'; END IF; @@ -1393,7 +1393,7 @@ RAISE EXCEPTION 'SQL/MM Spatial exception - null argument'; END IF; - IF NOT EXISTS(SELECT name FROM topology WHERE name = toponame) THEN + IF NOT EXISTS(SELECT name FROM topology.topology WHERE name = toponame) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - invalid topology name'; END IF; @@ -1464,10 +1464,10 @@ 'SQL/MM Spatial exception - null argument'; END IF; - -- + -- -- Atopology must be registered -- - IF NOT EXISTS(SELECT name FROM topology WHERE topology.name = atopology) THEN + IF NOT EXISTS(SELECT name FROM topology.topology WHERE topology.name = atopology) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - invalid topology name'; END IF; @@ -2523,7 +2523,7 @@ BEGIN WITH edgestar AS ( SELECT *, count(*) over () AS cnt - FROM GetNodeEdges(atopology, anode) + FROM topology.GetNodeEdges(atopology, anode) ) SELECT ARRAY[ ( SELECT p.edge AS prev FROM edgestar p @@ -2854,7 +2854,7 @@ IF oldedge.left_face != 0 THEN sql := 'UPDATE ' || quote_ident(atopology) || '.face ' || ' SET mbr = ' || quote_literal( - ST_Envelope(ST_GetFaceGeometry(atopology, oldedge.left_face))::text + ST_Envelope(topology.ST_GetFaceGeometry(atopology, oldedge.left_face))::text ) || '::geometry WHERE face_id = ' || oldedge.left_face; EXECUTE sql; @@ -2862,7 +2862,7 @@ IF oldedge.right_face != 0 AND oldedge.right_face != oldedge.left_face THEN sql := 'UPDATE ' || quote_ident(atopology) || '.face ' || ' SET mbr = ' || quote_literal( - ST_Envelope(ST_GetFaceGeometry(atopology, oldedge.right_face))::text + ST_Envelope(topology.ST_GetFaceGeometry(atopology, oldedge.right_face))::text ) || '::geometry WHERE face_id = ' || oldedge.right_face; EXECUTE sql; @@ -3052,11 +3052,12 @@ )::text ) || ') AND '; IF ishole THEN sql := sql || 'NOT '; END IF; - sql := sql || 'ST_Contains(' || quote_literal(fan.shell::text) + sql := sql || '( ' || quote_literal(fan.shell::text) + || ' && geom AND _ST_Contains(' || quote_literal(fan.shell::text) -- We only need to check a single point, but must not be an endpoint - || '::geometry, ST_LineInterpolatePoint(geom, 0.2))'; + || '::geometry, ST_LineInterpolatePoint(geom, 0.2)) )'; #ifdef POSTGIS_TOPOLOGY_DEBUG - RAISE DEBUG 'Updating edges bounding the old face'; + RAISE DEBUG 'Updating edges bounding the old face: %', sql; #endif EXECUTE sql; @@ -3222,7 +3223,7 @@ IF newedge.start_node_geom IS NULL THEN RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent node'; - ELSIF NOT Equals(newedge.start_node_geom, ST_StartPoint(acurve)) + ELSIF NOT ST_Equals(newedge.start_node_geom, ST_StartPoint(acurve)) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - start node not geometry start point.'; @@ -3231,7 +3232,7 @@ IF newedge.end_node_geom IS NULL THEN RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent node'; - ELSIF NOT Equals(newedge.end_node_geom, ST_EndPoint(acurve)) + ELSIF NOT ST_Equals(newedge.end_node_geom, ST_EndPoint(acurve)) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - end node not geometry end point.'; @@ -3853,7 +3854,7 @@ IF newedge.start_node_geom IS NULL THEN RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent node'; - ELSIF NOT Equals(newedge.start_node_geom, ST_StartPoint(acurve)) + ELSIF NOT ST_Equals(newedge.start_node_geom, ST_StartPoint(acurve)) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - start node not geometry start point.'; @@ -3862,7 +3863,7 @@ IF newedge.end_node_geom IS NULL THEN RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent node'; - ELSIF NOT Equals(newedge.end_node_geom, ST_EndPoint(acurve)) + ELSIF NOT ST_Equals(newedge.end_node_geom, ST_EndPoint(acurve)) THEN RAISE EXCEPTION 'SQL/MM Spatial exception - end node not geometry end point.'; diff -Nru postgis-2.1.1/topology/sql/topoelement/topoelement_agg.sql.in postgis-2.1.2+dfsg/topology/sql/topoelement/topoelement_agg.sql.in --- postgis-2.1.1/topology/sql/topoelement/topoelement_agg.sql.in 2013-03-19 09:53:17.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/sql/topoelement/topoelement_agg.sql.in 2014-02-22 09:13:36.000000000 +0000 @@ -49,6 +49,7 @@ -- -- Aggregates a set of TopoElement values into a TopoElementArray -- +-- Availability: 2.0.0 DROP AGGREGATE IF EXISTS topology.TopoElementArray_agg(topology.TopoElement); CREATE AGGREGATE topology.TopoElementArray_agg( sfunc = topology.TopoElementArray_append, diff -Nru postgis-2.1.1/topology/sql/topogeometry/simplify.sql.in postgis-2.1.2+dfsg/topology/sql/topogeometry/simplify.sql.in --- postgis-2.1.1/topology/sql/topogeometry/simplify.sql.in 2013-03-19 09:53:17.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/sql/topogeometry/simplify.sql.in 2013-11-21 17:24:53.000000000 +0000 @@ -63,7 +63,7 @@ sql := 'SELECT st_multi(st_union(topology.ST_Simplify(' || quote_ident(child_layer_info.feature_column) - || '))) as geom FROM ' + || ',' || tolerance || '))) as geom FROM ' || quote_ident(child_layer_info.schema_name) || '.' || quote_ident(child_layer_info.table_name) || ', ' || quote_ident(topology_info.name) || '.relation pr' diff -Nru postgis-2.1.1/topology/test/Makefile postgis-2.1.2+dfsg/topology/test/Makefile --- postgis-2.1.1/topology/test/Makefile 2013-11-08 19:46:16.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/test/Makefile 2014-03-29 05:39:49.000000000 +0000 @@ -2,7 +2,7 @@ PSQL=psql PERL=/opt/local/bin/perl -GEOS_NUMERIC_VERSION=30403 +GEOS_NUMERIC_VERSION=30402 all: @echo "Use 'make check' to run all tests" diff -Nru postgis-2.1.1/topology/test/regress/st_createtopogeo.sql postgis-2.1.2+dfsg/topology/test/regress/st_createtopogeo.sql --- postgis-2.1.1/topology/test/regress/st_createtopogeo.sql 2012-02-27 22:08:12.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/test/regress/st_createtopogeo.sql 2014-03-28 19:21:56.000000000 +0000 @@ -1,6 +1,7 @@ \set VERBOSITY terse set client_min_messages to ERROR; +TRUNCATE spatial_ref_sys; INSERT INTO spatial_ref_sys ( auth_name, auth_srid, srid, proj4text ) VALUES ( 'EPSG', 4326, 4326, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' ); -- Invalid topologies diff -Nru postgis-2.1.1/topology/test/regress/st_simplify_expected postgis-2.1.2+dfsg/topology/test/regress/st_simplify_expected --- postgis-2.1.1/topology/test/regress/st_simplify_expected 2013-03-07 16:14:45.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/test/regress/st_simplify_expected 2013-11-21 17:24:53.000000000 +0000 @@ -3,4 +3,7 @@ N2 S1|f|t S2|f|t +L2 +HS1|f|t +HS2|f|t f diff -Nru postgis-2.1.1/topology/test/regress/st_simplify.sql postgis-2.1.2+dfsg/topology/test/regress/st_simplify.sql --- postgis-2.1.1/topology/test/regress/st_simplify.sql 2013-03-07 16:14:45.000000000 +0000 +++ postgis-2.1.2+dfsg/topology/test/regress/st_simplify.sql 2013-11-21 17:24:53.000000000 +0000 @@ -1,10 +1,12 @@ set client_min_messages to WARNING; -SELECT CreateTopology('tt') > 1; +SELECT CreateTopology('tt') > 0; CREATE TABLE tt.areas(id serial, g geometry); INSERT INTO tt.areas(g) VALUES ('POLYGON((0 0,1 1,1 3,0 4,-2 3,-1 1,0 0))'), ('POLYGON((0 0,1 1,1 3,2 3,2 0,0 0))'); -SELECT 'L' || AddTopoGeometryColumn('tt', 'tt', 'areas', 'tg', 'polygon'); +CREATE TEMP TABLE _test_layers AS SELECT 1 as id, + AddTopoGeometryColumn('tt', 'tt', 'areas', 'tg', 'polygon') as layer_id; +SELECT 'L' || layer_id FROM _test_layers WHERE id = 1; UPDATE tt.areas SET tg = toTopoGeom(g, 'tt', 1); -- ensures this point won't be removed @@ -20,4 +22,30 @@ ST_Equals(ST_Simplify(tg, 1), 'POLYGON((0 0,1 3,2 0,0 0))') FROM tt.areas WHERE id = 2; +-- Test hierarchical -- see http://trac.osgeo.org/postgis/ticket/2547 + +CREATE TABLE tt.bigareas(id serial, g geometry); +INSERT INTO _test_layers SELECT 2, + AddTopoGeometryColumn('tt', 'tt', 'bigareas', 'tg', 'polygon', layer_id) + FROM _test_layers WHERE id = 1; +SELECT 'L' || layer_id FROM _test_layers WHERE id = 2; +INSERT INTO tt.bigareas (tg) SELECT + topology.CreateTopoGeom( 'tt', 3, + (select layer_id from _test_layers where id = 2), + TopoElementArray_agg(ARRAY[r.topogeo_id, r.layer_id])) + FROM tt.relation r, _test_layers l1 + WHERE r.layer_id = l1.layer_id AND l1.id = 1 + GROUP BY r.topogeo_id; +UPDATE tt.bigareas SET g = tg; + +SELECT 'HS1', + -- Point 1 3 is removed when simplifying the simple (unconstrained) geometry + ST_Equals(ST_Simplify( g, 1), 'POLYGON((0 0,1 3,-2 3,0 0))'), + ST_Equals(ST_Simplify(tg, 1), 'POLYGON((0 0,1 3,-2 3,0 0))') +FROM tt.bigareas WHERE id = 1; +SELECT 'HS2', + ST_Equals(ST_Simplify( g, 1), 'POLYGON((0 0,1 3,2 0,0 0))'), + ST_Equals(ST_Simplify(tg, 1), 'POLYGON((0 0,1 3,2 0,0 0))') +FROM tt.bigareas WHERE id = 2; + SELECT DropTopology('tt') IS NULL; diff -Nru postgis-2.1.1/.travis.yml postgis-2.1.2+dfsg/.travis.yml --- postgis-2.1.1/.travis.yml 2013-09-05 08:16:20.000000000 +0000 +++ postgis-2.1.2+dfsg/.travis.yml 2014-03-18 16:36:26.000000000 +0000 @@ -2,29 +2,15 @@ env: global: - PGUSER=postgres - matrix: - #- GEOS_VERSION=3.4.1 - #- GEOS_VERSION=3.3.8 - #- GDAL_VERSION=1.10.0 + - RUNTESTFLAGS=-v before_install: - rm .travis.yml - - sudo apt-add-repository -y ppa:ubuntugis/ubuntugis-unstable - sudo apt-get update - - sudo apt-get install -qq build-essential flex autoconf libtool gfortran postgresql-server-dev-all xsltproc libjson0-dev libproj-dev dblatex xsltproc libcunit1-dev libcunit1 docbook-xsl docbook-mathml libgdal-dev libgeos-dev + - apt-cache search libgdal + - sudo apt-get install -q build-essential flex autoconf libtool gfortran postgresql-server-dev-9.1 xsltproc libjson0-dev libproj-dev dblatex xsltproc libcunit1-dev libcunit1 docbook-xsl docbook-mathml libgdal-dev libgeos-dev - git config --global user.name "PostGIS Travis CI" - git config --global user.email $HOSTNAME":not-for-mail@travis-ci.org" -install: - - export LSB_RELEASE=$( lsb_release -rs ) - #- wget -q http://stardestroyer.de/travis/geos-$GEOS_VERSION.travis.$LSB_RELEASE.tar.gz - #- tar xvzf geos-$GEOS_VERSION.travis.$LSB_RELEASE.tar.gz -C / - #- sudo ln -s /home/travis/geos-$GEOS_VERSION/lib/libgeos_c.so.1.8.0 /usr/lib/libgeos_c.so.1 - #- wget -q http://stardestroyer.de/travis/gdal-$GDAL_VERSION.travis.$LSB_RELEASE.tar.gz - #- tar xvzf gdal-$GDAL_VERSION.travis.$LSB_RELEASE.tar.gz -C / - #- LD_LIBRARY_PATH="/home/travis/geos-$GEOS_VERSION/lib:/home/travis/gdal-$GDAL_VERSION/lib" - #- LD_RUN_PATH="/home/travis/geos-$GEOS_VERSION/lib:/home/travis/gdal-$GDAL_VERSION/lib" - ./autogen.sh - # - ./configure --with-geosconfig=/home/travis/geos-$GEOS_VERSION/bin/geos-config --with-gdalconfig=/home/travis/gdal-$GDAL_VERSION/bin/gdal-config - - ./configure language: c compiler: - gcc @@ -36,8 +22,5 @@ on_success: change on_failure: always use_notice: true -script: - - make - - make check RUNTESTFLAGS=-v -after_failure: - - cat /tmp/pgis_reg/* +#after_failure: +# - cat /tmp/pgis_reg/* diff -Nru postgis-2.1.1/utils/postgis_proc_upgrade.pl postgis-2.1.2+dfsg/utils/postgis_proc_upgrade.pl --- postgis-2.1.1/utils/postgis_proc_upgrade.pl 2013-10-24 19:54:45.000000000 +0000 +++ postgis-2.1.2+dfsg/utils/postgis_proc_upgrade.pl 2014-03-24 17:49:58.000000000 +0000 @@ -37,7 +37,21 @@ # if the major numbers in version_from are less than the version_to # number. # +# TODO: move configuration outside of code +# my $objs = { + "102" => { + "aggregates" => { + "st_extent(geometry)" => 1, + "st_memcollect(geometry)" => 1, + "st_memunion(geometry)" => 1, + "st_accum(geometry)" => 1, + "st_union(geometry)" => 1, + "st_collect(geometry)" => 1, + "st_polygonize(geometry)" => 1, + "st_makeline(geometry)" => 1 + } + }, "104" => { "types" => { "box3d_extent" => 1, @@ -64,6 +78,28 @@ "geography" => 1, "gidx" => 1 } + }, + "200" => { + "aggregates" => { + "st_3dextent(geometry)" => 1, + "topology.topoelementarray_agg(topology.topoelement)" => 1 + } + }, + "201" => { + "aggregates" => { + "st_samealignment(raster)" => 1, + "st_union(raster,unionarg[])" => 1, + "st_union(raster,integer,text)" => 1, + "st_union(raster,integer)" => 1, + "st_union(raster)" => 1, + "st_union(raster,text)" => 1 + }, + "operators" => { + "raster =" => 1 + }, + "opclasses" => { + "hash_raster_ops" => 1 + }, } }; @@ -75,6 +111,7 @@ if ( @ARGV < 1 || @ARGV > 3 ); my $sql_file = $ARGV[0]; +my $module = 'postgis'; my $version_to = ""; my $version_to_num = 0; my $version_from = $ARGV[1]; @@ -109,6 +146,10 @@ $version_to = $1; last; } + elsif (/TYPE raster/) + { + $module = 'postgis_raster'; + } } close(INPUT); @@ -142,6 +183,7 @@ while() { s/NEWVERSION/$version_to/g; + s/MODULE/$module/g; print; } @@ -211,24 +253,46 @@ my $type1 = $1; my $type2 = $2; my $def = $_; + unless (/;$/) { + while() { + $def .= $_; + last if /;$/; + } + } print "DROP CAST IF EXISTS ($type1 AS $type2);\n"; print $def; } # This code handles aggregates by dropping and recreating them. - if ( /^create aggregate\s+(\S+)\s*\(/i ) + if ( /^create aggregate\s+([^(]+)\s*\(/i ) { my $aggname = $1; + #print "-- Aggname ${aggname}\n"; my $aggtype = 'unknown'; my $def = $_; + if ( /^create aggregate\s+\S+\s*\(([^)]*)\)/i ) { + $aggtype = $1; + $aggtype =~ s/\s*,\s*/,/g; # drop spaces around commas + $aggtype =~ s/\s\s*/ /g; # collapse multiple spaces into one + } while() { $def .= $_; $aggtype = $1 if ( /basetype\s*=\s*([^,]*)\s*,/i ); last if /\);/; } - print "DROP AGGREGATE IF EXISTS $aggname($aggtype);\n"; - print $def; + my $aggsig = "$aggname($aggtype)"; + my $ver = $version_from_num + 1; + #print "-- Checking ${aggsig} -- From: ${version_from_num} -- To: ${version_to_num}\n"; + while( $version_from_num < $version_to_num && $ver <= $version_to_num ) + { + if( $objs->{$ver}->{"aggregates"}->{$aggsig} ) + { + print "DROP AGGREGATE IF EXISTS $aggsig;\n"; + print $def; + } + $ver++; + } } # This code handles operators by creating them if we are doing a major upgrade @@ -338,10 +402,10 @@ -- BEGIN - SELECT into old_scripts postgis_lib_version(); + SELECT into old_scripts MODULE_lib_version(); EXCEPTION WHEN OTHERS THEN RAISE DEBUG ''Got %'', SQLERRM; - SELECT into old_scripts postgis_scripts_installed(); + SELECT into old_scripts MODULE_scripts_installed(); END; SELECT into new_scripts ''NEWVERSION''; @@ -349,7 +413,7 @@ SELECT into new_maj substring(new_scripts from 1 for 2); IF old_maj != new_maj THEN - RAISE EXCEPTION ''Upgrade from version % to version % requires a dump/reload. See PostGIS manual for instructions'', old_scripts, new_scripts; + RAISE EXCEPTION ''Upgrade of MODULE from version % to version % requires a dump/reload. See PostGIS manual for instructions'', old_scripts, new_scripts; ELSE RETURN ''Scripts versions checked for upgrade: ok''; END IF; diff -Nru postgis-2.1.1/Version.config postgis-2.1.2+dfsg/Version.config --- postgis-2.1.1/Version.config 2013-11-08 19:37:33.000000000 +0000 +++ postgis-2.1.2+dfsg/Version.config 2014-03-29 05:36:01.000000000 +0000 @@ -5,5 +5,5 @@ POSTGIS_MAJOR_VERSION=2 POSTGIS_MINOR_VERSION=1 -POSTGIS_MICRO_VERSION=1 +POSTGIS_MICRO_VERSION=2