Commit b93fe356 authored by Bas Couwenberg's avatar Bas Couwenberg

Imported Upstream version 2.2.2+dfsg

parent 03d6f64d
File added
File added
File added
...@@ -7,3 +7,4 @@ ...@@ -7,3 +7,4 @@
GNUmakefile.in eol=lf GNUmakefile.in eol=lf
*_expected eol=lf *_expected eol=lf
*.dmp eol=lf *.dmp eol=lf
ChangeLog eol=lf
This diff is collapsed.
PostGIS 2.2.2
2016/03/22
* Bug Fixes *
- #3463, Fix crash on face-collapsing edge change
- #3422, Improve ST_Split robustness on standard precision double
systems (arm64, ppc64el, s390c, powerpc, ...)
- #3427, Update spatial_ref_sys to EPSG version 8.8
- #3433, ST_ClusterIntersecting incorrect for MultiPoints
- #3435, ST_AsX3D fix rendering of concave geometries
- #3436, memory handling mistake in ptarray_clone_deep
- #3437, ST_ClusterIntersecting incorrect for MultiPoints
- #3461, ST_GeomFromKML crashes Postgres when there are
innerBoundaryIs and no outerBoundaryIs
- #3429, upgrading to 2.3 or from 2.1 can cause loop/hang on some
platforms
- #3460, ST_ClusterWithin 'Tolerance not defined' error after upgrade
- #3490, Raster data restore issues, materialized views
Scripts postgis_proc_set_search_path.sql, rtpostgis_proc_set_search_path.sql
refere to http://postgis.net/docs/manual-2.2/RT_FAQ.html#faq_raster_data_not_restore
- #3426, failing POINT EMPTY tests on fun architectures
PostGIS 2.2.1 PostGIS 2.2.1
2016/01/06 2016/01/06
...@@ -17,10 +40,10 @@ PostGIS 2.2.1 ...@@ -17,10 +40,10 @@ PostGIS 2.2.1
- #3378, Fix handling of hierarchical TopoGeometries - #3378, Fix handling of hierarchical TopoGeometries
in presence of multiple topologies in presence of multiple topologies
- #3380, #3402, Decimate lines on topology load - #3380, #3402, Decimate lines on topology load
- #3388, #3410, Fix missing end-points in ST_Removepoints - #3388, #3410, Fix missing end-points in ST_RemoveRepeatedPoints
- #3389, Buffer overflow in lwgeom_to_geojson - #3389, Buffer overflow in lwgeom_to_geojson
- #3390, Compilation under Alpine Linux 3.2 - #3390, Compilation under Alpine Linux 3.2 gives an error when
gives an error when compiling the postgis and postgis_topology extension compiling the postgis and postgis_topology extensions
- #3393, ST_Area NaN for some polygons - #3393, ST_Area NaN for some polygons
- #3401, Improve ST_Split robustness on 32bit systems - #3401, Improve ST_Split robustness on 32bit systems
- #3404, ST_ClusterWithin crashes backend - #3404, ST_ClusterWithin crashes backend
......
PostGIS - Geographic Information Systems Extensions to PostgreSQL PostGIS - Geographic Information Systems Extensions to PostgreSQL
================================================================= =================================================================
:Version: 2.2.1 :Version: 2.2.2
:Date: 2015-10-XX :Date: 2016-03-22
:Website: http://postgis.net :Website: http://postgis.net
This distribution contains a module which implements GIS simple features, ties This distribution contains a module which implements GIS simple features, ties
......
...@@ -5,10 +5,12 @@ ...@@ -5,10 +5,12 @@
POSTGIS_MAJOR_VERSION=2 POSTGIS_MAJOR_VERSION=2
POSTGIS_MINOR_VERSION=2 POSTGIS_MINOR_VERSION=2
POSTGIS_MICRO_VERSION=1 POSTGIS_MICRO_VERSION=2
# Liblwgeom interface versioning, reset to 0:0:0 (cur:age:rev) # Liblwgeom interface versioning, reset to 0:0:0 (cur:age:rev)
# when changing POSTGIS_MINOR_VERSION # when changing POSTGIS_MINOR_VERSION
#
# Latest release from this branch was 5:0:0
# Current interface, increments when adding an interface # Current interface, increments when adding an interface
LIBLWGEOM_IFACE_CUR=5 LIBLWGEOM_IFACE_CUR=5
...@@ -18,5 +20,5 @@ LIBLWGEOM_IFACE_CUR=5 ...@@ -18,5 +20,5 @@ LIBLWGEOM_IFACE_CUR=5
LIBLWGEOM_IFACE_AGE=0 LIBLWGEOM_IFACE_AGE=0
# Revision of current interface, set to 0 when adding an interface # Revision of current interface, set to 0 when adding an interface
# or increment when just changing implementations. # or increment when just changing implementations.
LIBLWGEOM_IFACE_REV=0 LIBLWGEOM_IFACE_REV=1
...@@ -4,7 +4,7 @@ colivier = Olivier Courtin <olivier.courtin@oslandia.com> ...@@ -4,7 +4,7 @@ colivier = Olivier Courtin <olivier.courtin@oslandia.com>
cvs = No Body <no@body.net> cvs = No Body <no@body.net>
dblasby = David Blasby <dblasby@gmail.com> dblasby = David Blasby <dblasby@gmail.com>
devrim = Devrim GÜNDÜZ <devrim@gunduz.org> devrim = Devrim GÜNDÜZ <devrim@gunduz.org>
dustymugs = Bborie Park <bkpark at ucdavis.edu> dustymugs = Bborie Park <dustymugs at gmail.com>
dzwarg = David Zwarg <dzwarg@azavea.com> dzwarg = David Zwarg <dzwarg@azavea.com>
jeffloun = Jeff Lounsbury <jeffloun@refractions.net> jeffloun = Jeff Lounsbury <jeffloun@refractions.net>
jorgearevalo = Jorge Arévalo <jorge.arevalo at deimos-space.com> jorgearevalo = Jorge Arévalo <jorge.arevalo at deimos-space.com>
......
...@@ -4,7 +4,7 @@ colivier:Olivier Courtin <olivier.courtin@oslandia.com> ...@@ -4,7 +4,7 @@ colivier:Olivier Courtin <olivier.courtin@oslandia.com>
cvs:No Body <no@body.net> cvs:No Body <no@body.net>
dblasby:David Blasby <dblasby@gmail.com> dblasby:David Blasby <dblasby@gmail.com>
devrim:Devrim GÜNDÜZ <devrim@gunduz.org> devrim:Devrim GÜNDÜZ <devrim@gunduz.org>
dustymugs:Bborie Park <bkpark at ucdavis.edu> dustymugs:Bborie Park <dustymugs at gmail.com>
dzwarg:David Zwarg <dzwarg@azavea.com> dzwarg:David Zwarg <dzwarg@azavea.com>
jeffloun:Jeff Lounsbury <jeffloun@refractions.net> jeffloun:Jeff Lounsbury <jeffloun@refractions.net>
jorgearevalo:Jorge Arévalo <jorge.arevalo at deimos-space.com> jorgearevalo:Jorge Arévalo <jorge.arevalo at deimos-space.com>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Attempt to guess a canonical system name. # Attempt to guess a canonical system name.
# Copyright 1992-2015 Free Software Foundation, Inc. # Copyright 1992-2015 Free Software Foundation, Inc.
timestamp='2015-08-20' timestamp='2015-01-01'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
...@@ -168,27 +168,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ...@@ -168,27 +168,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor # Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown". # portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch" sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
/usr/sbin/$sysctl 2>/dev/null || \
echo unknown)`
case "${UNAME_MACHINE_ARCH}" in case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;; armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;; arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;; sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;; sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;; sh5el) machine=sh5le-unknown ;;
earmv*)
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
machine=${arch}${endian}-unknown
;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac esac
# The Operating System including object format, if it has switched # The Operating System including object format, if it has switched
# to ELF recently, or will in the future. # to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in case "${UNAME_MACHINE_ARCH}" in
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__ | grep -q __ELF__
...@@ -204,13 +197,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ...@@ -204,13 +197,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd os=netbsd
;; ;;
esac esac
# Determine ABI tags.
case "${UNAME_MACHINE_ARCH}" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
;;
esac
# The OS release # The OS release
# Debian GNU/NetBSD machines have a different userland, and # Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need # thus, need a distinct triplet. However, they do not need
...@@ -221,13 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ...@@ -221,13 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
release='-gnu' release='-gnu'
;; ;;
*) *)
release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
;; ;;
esac esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form: # contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}${abi}" echo "${machine}-${os}${release}"
exit ;; exit ;;
*:Bitrig:*:*) *:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
...@@ -249,9 +235,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ...@@ -249,9 +235,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:MirBSD:*:*) *:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
exit ;; exit ;;
*:Sortix:*:*)
echo ${UNAME_MACHINE}-unknown-sortix
exit ;;
alpha:OSF1:*:*) alpha:OSF1:*:*)
case $UNAME_RELEASE in case $UNAME_RELEASE in
*4.0) *4.0)
...@@ -950,9 +933,6 @@ EOF ...@@ -950,9 +933,6 @@ EOF
crisv32:Linux:*:*) crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC} echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;; exit ;;
e2k:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
frv:Linux:*:*) frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;; exit ;;
...@@ -1041,7 +1021,7 @@ EOF ...@@ -1041,7 +1021,7 @@ EOF
echo ${UNAME_MACHINE}-dec-linux-${LIBC} echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;; exit ;;
x86_64:Linux:*:*) x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-pc-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;; exit ;;
xtensa*:Linux:*:*) xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2015 Free Software Foundation, Inc. # Copyright 1992-2015 Free Software Foundation, Inc.
timestamp='2015-08-20' timestamp='2015-01-01'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
...@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` ...@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \ kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*) storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
...@@ -255,12 +255,11 @@ case $basic_machine in ...@@ -255,12 +255,11 @@ case $basic_machine in
| arc | arceb \ | arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \ | avr | avr32 \
| ba \
| be32 | be64 \ | be32 | be64 \
| bfin \ | bfin \
| c4x | c8051 | clipper \ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| e2k | epiphany \ | epiphany \
| fido | fr30 | frv | ft32 \ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \ | hexagon \
...@@ -306,7 +305,7 @@ case $basic_machine in ...@@ -306,7 +305,7 @@ case $basic_machine in
| riscv32 | riscv64 \ | riscv32 | riscv64 \
| rl78 | rx \ | rl78 | rx \
| score \ | score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \ | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
...@@ -377,13 +376,12 @@ case $basic_machine in ...@@ -377,13 +376,12 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \ | avr-* | avr32-* \
| ba-* \
| be32-* | be64-* \ | be32-* | be64-* \
| bfin-* | bs2000-* \ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \ | d10v-* | d30v-* | dlx-* \
| e2k-* | elxsi-* \ | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
...@@ -430,13 +428,12 @@ case $basic_machine in ...@@ -430,13 +428,12 @@ case $basic_machine in
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \ | pyramid-* \
| riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \ | tile*-* \
...@@ -521,9 +518,6 @@ case $basic_machine in ...@@ -521,9 +518,6 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
os=-aros os=-aros
;; ;;
asmjs)
basic_machine=asmjs-unknown
;;
aux) aux)
basic_machine=m68k-apple basic_machine=m68k-apple
os=-aux os=-aux
...@@ -1379,7 +1373,7 @@ case $os in ...@@ -1379,7 +1373,7 @@ case $os in
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* | -cloudabi* | -sortix* \ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -461,7 +461,7 @@ Total query runtime: 245 ms. ...@@ -461,7 +461,7 @@ Total query runtime: 245 ms.
<para>Returns value of specific setting stored in tiger.geocode_settings table. Settings allow you to toggle debugging of functions. Later plans will be to control rating with settings. Current list of settings are as follows:</para> <para>Returns value of specific setting stored in tiger.geocode_settings table. Settings allow you to toggle debugging of functions. Later plans will be to control rating with settings. Current list of settings are as follows:</para>
<screen> name | setting | unit | category | short_desc <screen> name | setting | unit | category | short_desc
--------------------------------+---------+---------+-----------+------------------------------------------------------------------------------------------------------------------------------ --------------------------------+---------+---------+-----------+------------------------------------------------------------------------------------------------------------------------------
debug_geocode_address | false | boolean | debug | outputs debug information in notice log such as queries when geocode_addresss is called if true debug_geocode_address | false | boolean | debug | outputs debug information in notice log such as queries when geocode_address is called if true
debug_geocode_intersection | false | boolean | debug | outputs debug information in notice log such as queries when geocode_intersection is called if true debug_geocode_intersection | false | boolean | debug | outputs debug information in notice log such as queries when geocode_intersection is called if true
debug_normalize_address | false | boolean | debug | outputs debug information in notice log such as queries and intermediate expressions when normalize_address is called if true debug_normalize_address | false | boolean | debug | outputs debug information in notice log such as queries and intermediate expressions when normalize_address is called if true
debug_reverse_geocode | false | boolean | debug | if true, outputs debug information in notice log such as queries and intermediate expressions when reverse_geocode debug_reverse_geocode | false | boolean | debug | if true, outputs debug information in notice log such as queries and intermediate expressions when reverse_geocode
......
...@@ -3,6 +3,27 @@ ...@@ -3,6 +3,27 @@
<title>PostGIS Frequently Asked Questions</title> <title>PostGIS Frequently Asked Questions</title>
<qandaset> <qandaset>
<qandaentry id="faq_mat_views_restore">
<question>
<para>My materialized views involving ST_Distance geography and other functions do not restore</para>
</question>
<answer>
<para>Some materialized views involing postgis do not restore as a result of use of PostGIS functions that call other PostGIS functions. This happens if you materialized view is in a different schema from where PostGIS is installed since they make unqualified function calls, and the pg_restore always sets schema to the schema of the view being restored. Since materialized view functions get called in order to build the data, the calls fail and therefore the creation of the view fails as well.</para>
<para>As of PostGIS 2.2.2
there is a script in share/contrib/postgis-2.2/postgis_proc_set_search_path.sql that will set the search_path of most postgis functions. To use
when restoring data:</para>
<programlisting>-- make sure to install in same schema as your backup was installed in
CREATE EXTENSION postgis;
\i postgis_proc_set_search_path.sql
-- then restore your data</programlisting>
<para>Keep in mind the search path was not set for functions relationship functions like <varname>ST_Intersects</varname>, <varname>ST_DWithin</varname> since these rely on SQL-inlining to force index usage, and such behavior would get broken if FUNCTION search_path is applied. In these cases, we suggest if you need these in materialized views, to explicitly call the hidden _ST_.. function instead accompanied by &amp;&amp;. So for example:</para>
<programlisting><![CDATA[CREATE MATERIALIZED VIEW vwmat_something AS
SELECT ...
FROM a INNER JOIN b ON ( a.geom &&; b.geom AND _ST_Intersects(a.geo, b.geom) );]]></programlisting>
</answer>
</qandaentry>
<qandaentry id="faq_where_tutorials"> <qandaentry id="faq_where_tutorials">
<question> <question>
<para>Where can I find tutorials, guides and workshops on working with PostGIS</para> <para>Where can I find tutorials, guides and workshops on working with PostGIS</para>
......
...@@ -3,6 +3,22 @@ ...@@ -3,6 +3,22 @@
<title>PostGIS Raster Frequently Asked Questions</title> <title>PostGIS Raster Frequently Asked Questions</title>
<qandaset> <qandaset>
<qandaentry id="faq_raster_data_not_restore">
<question>
<para>My raster data does not restore.</para>
</question>
<answer>
<para>Raster data does not restore as a result of constraints that rely on schema postgis is installed in to be in search path. As of PostGIS 2.2.2
there is a script in share/contrib/postgis-2.2/postgis_proc_set_search_path.sql that will set the search_path of all raster functions. To use
when restoring data:</para>
<programlisting>
-- make sure to install in same schema as your backup was installed in
CREATE EXTENSION postgis;
\i rtpostgis_proc_set_search_path.sql
-- then restore your data</programlisting>
</answer>
</qandaentry>
<qandaentry id="faq_security_change_1"> <qandaentry id="faq_security_change_1">
<question> <question>
......
...@@ -449,6 +449,10 @@ COMMENT ON FUNCTION ST_Centroid(geometry ) IS 'args: g1 - Returns the geometric ...@@ -449,6 +449,10 @@ COMMENT ON FUNCTION ST_Centroid(geometry ) IS 'args: g1 - Returns the geometric
COMMENT ON FUNCTION ST_ClosestPoint(geometry , geometry ) IS 'args: g1, g2 - Returns the 2-dimensional point on g1 that is closest to g2. This is the first point of the shortest line.'; COMMENT ON FUNCTION ST_ClosestPoint(geometry , geometry ) IS 'args: g1, g2 - Returns the 2-dimensional point on g1 that is closest to g2. This is the first point of the shortest line.';
COMMENT ON AGGREGATE ST_ClusterIntersecting(geometry) IS 'args: g - Aggregate. Returns an array with the connected components of a set of geometries';
COMMENT ON AGGREGATE ST_ClusterWithin(geometry, float8 ) IS 'args: g, distance - Aggregate. Returns an array of GeometryCollections, where each GeometryCollection represents a set of geometries separated by no more than the specified distance.';
COMMENT ON FUNCTION ST_Contains(geometry , geometry ) IS 'args: geomA, geomB - Returns true if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.'; COMMENT ON FUNCTION ST_Contains(geometry , geometry ) IS 'args: geomA, geomB - Returns true if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.';
COMMENT ON FUNCTION ST_ContainsProperly(geometry , geometry ) IS 'args: geomA, geomB - Returns true if B intersects the interior of A but not the boundary (or exterior). A does not contain properly itself, but does contain itself.'; COMMENT ON FUNCTION ST_ContainsProperly(geometry , geometry ) IS 'args: geomA, geomB - Returns true if B intersects the interior of A but not the boundary (or exterior). A does not contain properly itself, but does contain itself.';
...@@ -629,10 +633,6 @@ COMMENT ON FUNCTION ST_Union(geometry, geometry) IS 'args: g1, g2 - Returns a ge ...@@ -629,10 +633,6 @@ COMMENT ON FUNCTION ST_Union(geometry, geometry) IS 'args: g1, g2 - Returns a ge
COMMENT ON FUNCTION ST_Union(geometry[]) IS 'args: g1_array - Returns a geometry that represents the point set union of the Geometries.'; COMMENT ON FUNCTION ST_Union(geometry[]) IS 'args: g1_array - Returns a geometry that represents the point set union of the Geometries.';
COMMENT ON FUNCTION ST_ClusterWithin(geometry , float8 ) IS 'args: g, distance - Aggregate. Returns an array of GeometryCollections, where each GeometryCollection represents a set of geometries separated by no more than the specified distance.';
COMMENT ON FUNCTION ST_ClusterIntersecting(geometry ) IS 'args: g - Aggregate. Returns an array with the connected components of a set of geometries';
COMMENT ON FUNCTION ST_UnaryUnion(geometry ) IS 'args: geom - Like ST_Union, but working at the geometry component level.'; COMMENT ON FUNCTION ST_UnaryUnion(geometry ) IS 'args: geom - Like ST_Union, but working at the geometry component level.';
COMMENT ON FUNCTION ST_LineInterpolatePoint(geometry , float8 ) IS 'args: a_linestring, a_fraction - Returns a point interpolated along a line. Second argument is a float8 between 0 and 1 representing fraction of total length of linestring the point has to be located.'; COMMENT ON FUNCTION ST_LineInterpolatePoint(geometry , float8 ) IS 'args: a_linestring, a_fraction - Returns a point interpolated along a line. Second argument is a float8 between 0 and 1 representing fraction of total length of linestring the point has to be located.';
......
...@@ -1032,6 +1032,113 @@ SELECT ST_AsText( ...@@ -1032,6 +1032,113 @@ SELECT ST_AsText(
</refsection> </refsection>
</refentry> </refentry>
<refentry id="ST_ClusterIntersecting">
<refnamediv>
<refname>ST_ClusterIntersecting</refname>
<refpurpose>Aggregate. Returns an array with the connected components of a set of geometries</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>geometry[] <function>ST_ClusterIntersecting</function></funcdef>
<paramdef><type>geometry set </type> <parameter>g</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsection>
<title>Description</title>
<para>ST_ClusterIntersecting is an aggregate function that returns an array of GeometryCollections, where each GeometryCollection represents an interconnected set of geometries.</para>
<para>Availability: 2.2.0 - requires GEOS </para>
</refsection>
<refsection>
<title>Examples</title>
<programlisting>
WITH testdata AS
(SELECT unnest(ARRAY['LINESTRING (0 0, 1 1)'::geometry,
'LINESTRING (5 5, 4 4)'::geometry,
'LINESTRING (6 6, 7 7)'::geometry,
'LINESTRING (0 0, -1 -1)'::geometry,
'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))'::geometry]) AS geom)
SELECT ST_AsText(unnest(ST_ClusterIntersecting(geom))) FROM testdata;
--result
st_astext
---------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(5 5,4 4),LINESTRING(0 0,-1 -1),POLYGON((0 0,4 0,4 4,0 4,0 0)))
GEOMETRYCOLLECTION(LINESTRING(6 6,7 7))
</programlisting>
</refsection>
<refsection>
<title>See Also</title>
<para>
<xref linkend="ST_ClusterWithin" />,
</para>
</refsection>
</refentry>
<refentry id="ST_ClusterWithin">
<refnamediv>
<refname>ST_ClusterWithin</refname>
<refpurpose>Aggregate. Returns an array of GeometryCollections, where each GeometryCollection represents a set of geometries separated by no more than the specified distance.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
<funcdef>geometry[] <function>ST_ClusterWithin</function></funcdef>
<paramdef><type>geometry set </type> <parameter>g</parameter></paramdef>
<paramdef><type>float8 </type> <parameter>distance</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsection>
<title>Description</title>
<para>ST_ClusterWithin is an aggregate function that returns an array of GeometryCollections, where each GeometryCollection represents a set of geometries separated by no more than the specified distance.</para>
<para>Availability: 2.2.0 - requires GEOS</para>
</refsection>
<refsection>
<title>Examples</title>
<programlisting>
WITH testdata AS
(SELECT unnest(ARRAY['LINESTRING (0 0, 1 1)'::geometry,
'LINESTRING (5 5, 4 4)'::geometry,
'LINESTRING (6 6, 7 7)'::geometry,
'LINESTRING (0 0, -1 -1)'::geometry,
'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))'::geometry]) AS geom)
SELECT ST_AsText(unnest(ST_ClusterWithin(geom, 1.4))) FROM testdata;
--result
st_astext
---------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(5 5,4 4),LINESTRING(0 0,-1 -1),POLYGON((0 0,4 0,4 4,0 4,0 0)))
GEOMETRYCOLLECTION(LINESTRING(6 6,7 7))
</programlisting>
</refsection>
<refsection>
<title>See Also</title>
<para>
<xref linkend="ST_ClusterIntersecting" />,
</para>
</refsection>
</refentry>
<refentry id="ST_Contains"> <refentry id="ST_Contains">
<refnamediv> <refnamediv>
<refname>ST_Contains</refname> <refname>ST_Contains</refname>
......
...@@ -1258,7 +1258,7 @@ SELECT ST_AsTWKB(array_agg(geom), array_agg(gid)) FROM mytable; ...@@ -1258,7 +1258,7 @@ SELECT ST_AsTWKB(array_agg(geom), array_agg(gid)) FROM mytable;
<refsection> <refsection>
<title>Description</title> <title>Description</title>
<para>Returns the geometry as an Encoded Polyline.</para> <para>Returns the geometry as an Encoded Polyline. This is a format very useful if you are using google maps</para>
<para>Availability: 2.2.0</para> <para>Availability: 2.2.0</para>
...@@ -1266,16 +1266,39 @@ SELECT ST_AsTWKB(array_agg(geom), array_agg(gid)) FROM mytable; ...@@ -1266,16 +1266,39 @@ SELECT ST_AsTWKB(array_agg(geom), array_agg(gid)) FROM mytable;
<refsection> <refsection>
<title>Examples</title> <title>Examples</title>
<para>Basic </para>
<programlisting> <programlisting>
ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)')); SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)'));
--result-- --result--
|_p~iF~ps|U_ulLnnqC_mqNvxq`@ |_p~iF~ps|U_ulLnnqC_mqNvxq`@
</programlisting> </programlisting>
<para>Use in conjunction with geography linestring and geography segmentize, and put on google maps</para>
<programlisting>-- the SQL for Boston to San Francisco, segments every 100 KM
SELECT ST_AsEncodedPolyline(
ST_Segmentize(
ST_GeogFromText('LINESTRING(-71.0519 42.4935,-122.4483 37.64)'),
100000)::geometry) As encodedFlightPath;</programlisting>
<para>javascript will look something like this where $ variable you replace with query result</para>
<programlisting><![CDATA[
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
<script type="text/javascript">
flightPath = new google.maps.Polyline({
path: google.maps.geometry.encoding.decodePath("$encodedFlightPath"),
map: map,
strokeColor: '#0000CC',
strokeOpacity: 1.0,
strokeWeight: 4
});
</script>
]]></programlisting>
</refsection> </refsection>
<!-- Optionally add a "See Also" section --> <!-- Optionally add a "See Also" section -->
<refsection> <refsection>
<title>See Also</title> <title>See Also</title>
<para><xref linkend="ST_LineFromEncodedPolyline" /></para> <para><xref linkend="ST_LineFromEncodedPolyline" />, <xref linkend="ST_Segmentize" /></para>
</refsection> </refsection>
</refentry> </refentry>
</sect1> </sect1>
...@@ -3374,114 +3374,10 @@ MULTILINESTRING((3 4,4 5),(1 2,3 4)) ...@@ -3374,114 +3374,10 @@ MULTILINESTRING((3 4,4 5),(1 2,3 4))
</para> </para>