From trac at osgeo.org Mon Nov 3 02:21:43 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 03 Nov 2025 10:21:43 -0000 Subject: [PostGIS] #5593: Fails to build with imagemagic 6.9.12.98 In-Reply-To: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> References: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> Message-ID: <065.78fd875e3853fa843541f0cf68690cc5@osgeo.org> #5593: Fails to build with imagemagic 6.9.12.98 -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.4.1 Component: build | Version: 3.4.x Resolution: wontfix | Keywords: -----------------------------+--------------------------- Comment (by Bas Couwenberg): Just for the record, the graphicsmagick-imagemagic-compat package was recently dropped because !ImageMagick and !GraphicsMagic are increasingly diverging ([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=413954#97 Debian Bug #413954]). The Debian package build fails with both plain graphicsmagic & imagemagic, so we stopped building the postgis-doc package. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Nov 3 08:02:46 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 03 Nov 2025 16:02:46 -0000 Subject: [PostGIS] #5593: Fails to build with imagemagic 6.9.12.98 In-Reply-To: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> References: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> Message-ID: <065.d53affe0135645a4fcc0e062f94b3438@osgeo.org> #5593: Fails to build with imagemagic 6.9.12.98 -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: PostGIS 3.4.1 Component: build | Version: 3.4.x Resolution: | Keywords: -----------------------------+--------------------------- Changes (by komzpa): * resolution: wontfix => * status: closed => reopened -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Nov 3 08:04:42 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 03 Nov 2025 16:04:42 -0000 Subject: [PostGIS] #5593: Fails to build with imagemagic 6.9.12.98 In-Reply-To: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> References: <050.d70c51fcb8f375a80f52b2069c0d9bcc@osgeo.org> Message-ID: <065.4950d2150a95a339c5cbdea21a959589@osgeo.org> #5593: Fails to build with imagemagic 6.9.12.98 -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: komzpa Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.4.1 Component: build | Version: 3.4.x Resolution: | Keywords: -----------------------------+--------------------------- Changes (by komzpa): * owner: strk => komzpa * status: reopened => new Comment: It looks like both imagemagick and graphicsmagick stopping providing convert command. Which is probably for the good as word `convert` can mean too many different conversions and now ogr2ogr can take it instead/s. Will take a look how to fix this. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Nov 4 00:56:05 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 04 Nov 2025 08:56:05 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray Message-ID: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray ----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Keywords: | ----------------------+--------------------------- In function lwcircstring_construct the following line should be added {{{ FLAGS_SET_READONLY(result->points->flags, 0); }}} to get the ownership of the pointarray that was created with the read-only flag to 1 in function `ptarray_construct_reference_data` which has been called in function `lwcircstring_from_lwpointarray` -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 5 04:50:37 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 05 Nov 2025 12:50:37 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.77f27c73762677a19ed646485a7ddc98@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by pramsey): The whole point of the function ptarray_construct_reference_data is to build a point array on top of an array that is not owned by the overarching struct, as it says in the comment atop the function, so turning off READONLY is explicitly opposite the contract, and it would make no sense to do that. Do you have a valgrind result showing this leak? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 6 00:57:30 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 06 Nov 2025 08:57:30 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.fc633d0a4a4ce4644b08e05fe0345f60@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by mschoema): I believe the issue is actually in lwcircstring_from_lwpointarray and comes from how the three functions interact. Essentially, lwcircstring_from_lwpointarray first allocates memory to write the points in, then calls ptarray_construct_reference_data, then calls lwcircstring_construct. But this means that at the end of the function, the resulting LWCIRCSTRING does not own its own pointarry. This will thus cause memory leaks when trying to free the circstring, because no-one else owns this pointarray. I believe lwcircstring_from_lwpointarray should either call ptarray_construct_copy_data (but that's an unnecessary memory allocation) or change the readonly flag of its pointarray before returning. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 6 01:29:28 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 06 Nov 2025 09:29:28 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.34c422b0c59bace99f4fb20b70e6ed04@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by mschoema): Note that this issue also happens in lwcircstring_from_lwmpoint, but these are the only two calls to ptarray_construct_reference_data other than the ones in the _from_gserialized functions. I also see that these functions (lwcircstring_from_lwpointarray and lwcircstring_from_lwmpoint, amongst a few others) are only defined in lwcircstring.c (though not static) and not exposed in liblwgeom.h Is there a reason for that? I see an equivalent lwline_from_ptarray function for lines, but it is marked as deprecated in liblwgeom.h. Why was it deprecated, and what should the alternative be to create a line (or a circular string) from a set of points? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 6 13:13:41 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 06 Nov 2025 21:13:41 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.a08c43c5cb03ec6eec3a96fe7dad2b59@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by pramsey): That explains why it's not showing up in valgrind, lwcircstring_from_lwpointarray is never used. Nor is lwcircstring_from_lwmpoint. The answer for why they are declared up top I think is because if they were just made static the compiler would complain about unused static functions. So it was just reactivity to a compiler complaint. It's not clear to me we should keep them around "just in case". -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 6 14:15:48 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 06 Nov 2025 22:15:48 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.ac3467ba8c39f6d1b056cd7196ed911e@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by ezimanyi): The following MEOS program {{{ /** * @file * @brief A simple MEOS program that creates a circle and prints its * WKT representation using the liblwgeom library. * * The program can be build as follows * @code * gcc -Wall -g -I/usr/local/include -o geocircle_test geocircle_test.c -L/usr/local/lib -lmeos * @endcode */ #include #include #include #include extern GSERIALIZED *geocircle_make(double x, double y, double radius, int32_t srid); /* Main program */ int main(void) { /* Initialize MEOS */ meos_initialize(); GSERIALIZED *circle = geocircle_make(1, 1, 1, 5676); char *circle_out = geo_as_ewkt(circle, 6); printf("%s\n", circle_out); free(circle); free(circle_out); /* Finalize MEOS */ meos_finalize(); return 0; } }}} tested with Valgrind when commenting in/out the line FLAGS_SET_READONLY(result->points->flags, 0); https://github.com/estebanzimanyi/MobilityDB/blob/meos_test/postgis/liblwgeom/lwcircstring.c#L74C3-L74C21 is as follows ---------------------------------------------------------------------------------- {{{ $ valgrind -s --leak-check=full --show-leak-kinds=all ./geocircle_test ==3353068== Memcheck, a memory error detector ==3353068== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==3353068== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info ==3353068== Command: ./geocircle_test ==3353068== SRID=5676;CURVEPOLYGON(CIRCULARSTRING(0 1,2 1,0 1)) ==3353068== ==3353068== HEAP SUMMARY: ==3353068== in use at exit: 0 bytes in 0 blocks ==3353068== total heap usage: 8,201 allocs, 8,201 frees, 967,211 bytes allocated ==3353068== ==3353068== All heap blocks were freed -- no leaks are possible ==3353068== ==3353068== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) }}} ---------------------------------------------------------------------------------- {{{ $ valgrind -s --leak-check=full --show-leak-kinds=all ./geocircle_test ==3365033== Memcheck, a memory error detector ==3365033== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==3365033== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info ==3365033== Command: ./geocircle_test ==3365033== SRID=5676;CURVEPOLYGON(CIRCULARSTRING(0 1,2 1,0 1)) ==3365033== ==3365033== HEAP SUMMARY: ==3365033== in use at exit: 48 bytes in 1 blocks ==3365033== total heap usage: 8,201 allocs, 8,200 frees, 967,211 bytes allocated ==3365033== ==3365033== 48 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==3365033== at 0x4848899: malloc (in /usr/libexec/valgrind /vgpreload_memcheck-amd64-linux.so) ==3365033== by 0x4A25935: default_allocator (lwutil.c:91) ==3365033== by 0x4A25EFD: lwalloc (lwutil.c:229) ==3365033== by 0x49CF81B: lwcircstring_from_lwpointarray (lwcircstring.c:175) ==3365033== by 0x498CCFB: lwcircle_make (tcbuffer_spatialfuncs.c:111) ==3365033== by 0x498CDBB: geocircle_make (tcbuffer_spatialfuncs.c:126) ==3365033== by 0x109227: main (geocircle_test.c:26) ==3365033== ==3365033== LEAK SUMMARY: ==3365033== definitely lost: 48 bytes in 1 blocks ==3365033== indirectly lost: 0 bytes in 0 blocks ==3365033== possibly lost: 0 bytes in 0 blocks ==3365033== still reachable: 0 bytes in 0 blocks ==3365033== suppressed: 0 bytes in 0 blocks ==3365033== ==3365033== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) $ }}} ---------------------------------------------------------------------------------- -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 07:00:43 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 15:00:43 -0000 Subject: [PostGIS] #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate In-Reply-To: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> References: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> Message-ID: <061.ea3e3092e2f9615d95986e8060b5e7e8@osgeo.org> #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate -----------------------+--------------------------- Reporter: robe | Owner: komzpa Type: defect | Status: new Priority: critical | Milestone: PostGIS 3.4.5 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Changes (by robe): * owner: pramsey => komzpa -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 7 10:35:17 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 7 Nov 2025 10:35:17 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.0-27-g21517f662 Message-ID: <20251107183518.55B9419F171@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 21517f662368c90bbee0dfdebff3cb82059467fd (commit) via a518412e516d4c7b216fd2f2797b20495d095e44 (commit) via b950728171f5d26fc3bbdd2f1cdf023cbffb0169 (commit) from 58b4e2571588b4aace175431f2ff33445c230ee4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 21517f662368c90bbee0dfdebff3cb82059467fd Author: Darafei Praliaskouski Date: Fri Nov 7 22:34:25 2025 +0400 Touch up NEWS Closes #5984 diff --git a/NEWS b/NEWS index b7fc26db9..7a06e124f 100644 --- a/NEWS +++ b/NEWS @@ -14,10 +14,7 @@ PostGIS 3.6.1 by extension are owned by extension authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) - -* Bug Fixes * - - - #5959, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) PostGIS 3.6.0 commit a518412e516d4c7b216fd2f2797b20495d095e44 Author: Darafei Praliaskouski Date: Thu Oct 30 03:46:26 2025 +0400 Guard against histogram axis dimension underflow References #5959 References #5984 diff --git a/postgis/cunit/cu_tester.c b/postgis/cunit/cu_tester.c index b4dd46aa7..eb6ba5b0d 100644 --- a/postgis/cunit/cu_tester.c +++ b/postgis/cunit/cu_tester.c @@ -28,6 +28,7 @@ #include #include +#include #include #include "../gserialized_estimate_support.h" @@ -82,6 +83,23 @@ histogram_budget_clamps(void) CU_ASSERT_EQUAL(histogram_cell_budget((double)INT_MAX, 50000, INT_MAX), INT_MAX); } +static void +histogram_axis_allocation_guards(void) +{ + /* Baseline: evenly split a 10k target over two varying dimensions. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, 0.5), 100); + + /* Skewed axis ratios that collapse to tiny powers still return one cell. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, 1e-9), 1); + + /* Denormals, NaNs and negative ratios should not leak to the histogram. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, NAN), 1); + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, -0.5), 1); + + /* Extremely aggressive ratios remain bounded by the square root of the budget. */ + CU_ASSERT_EQUAL(histogram_axis_cells(INT_MAX, 2, 1.0), (int)sqrt((double)INT_MAX * 2.0)); +} + static void nd_stats_indexing_behaviour(void) { @@ -138,6 +156,7 @@ main(void) goto cleanup; if (!CU_add_test(suite, "histogram budget clamps", histogram_budget_clamps) || + !CU_add_test(suite, "histogram axis guards", histogram_axis_allocation_guards) || !CU_add_test(suite, "nd_stats value index guards", nd_stats_indexing_behaviour) || !CU_add_test(suite, "nd_box ratio edge cases", nd_box_ratio_cases)) { diff --git a/postgis/gserialized_estimate.c b/postgis/gserialized_estimate.c index ea887ecb6..54adae679 100644 --- a/postgis/gserialized_estimate.c +++ b/postgis/gserialized_estimate.c @@ -1516,11 +1516,10 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu * Scale the target cells number by the # of dims and ratio, * then take the appropriate root to get the estimated number of cells * on this axis (eg, pow(0.5) for 2d, pow(0.333) for 3d, pow(0.25) for 4d) - */ - histo_size[d] = (int)pow((double)histo_cells_target * histo_ndims * edge_ratio, 1/(double)histo_ndims); - /* If something goes awry, just give this dim one slot */ - if ( ! histo_size[d] ) - histo_size[d] = 1; + * The dedicated helper clamps pathological floating point inputs so we + * do not resurrect the NaN propagation reported in #5959 on amd64. + */ + histo_size[d] = histogram_axis_cells(histo_cells_target, histo_ndims, edge_ratio); } histo_cells_new *= histo_size[d]; } diff --git a/postgis/gserialized_estimate_support.h b/postgis/gserialized_estimate_support.h index 0d3a23d75..6b372a43e 100644 --- a/postgis/gserialized_estimate_support.h +++ b/postgis/gserialized_estimate_support.h @@ -151,6 +151,46 @@ histogram_cell_budget(double total_rows, int ndims, int attstattarget) return (int)budget; } +/* + * Allocate histogram buckets along a single axis in proportion to the observed + * density variation. The caller passes in the global histogram target along + * with the number of axes that exhibited variation in the sampled data and the + * relative contribution of the current axis (edge_ratio). Earlier versions + * evaluated the pow() call directly in the caller, which exposed the planner to + * NaN propagation on some amd64 builds when the ratio was denormal or negative + * (see #5959). Keeping the calculation in one place allows us to clamp the + * inputs and provide a predictable fallback for problematic floating point + * combinations. + */ +static inline int +histogram_axis_cells(int histo_cells_target, int histo_ndims, double edge_ratio) +{ + double scaled; + double axis_cells; + + if (histo_cells_target <= 0 || histo_ndims <= 0) + return 1; + + if (!(edge_ratio > 0.0) || !isfinite(edge_ratio)) + return 1; + + scaled = (double)histo_cells_target * (double)histo_ndims * edge_ratio; + if (!(scaled > 0.0) || !isfinite(scaled)) + return 1; + + axis_cells = pow(scaled, 1.0 / (double)histo_ndims); + if (!(axis_cells > 0.0) || !isfinite(axis_cells)) + return 1; + + if (axis_cells >= (double)INT_MAX) + return INT_MAX; + + if (axis_cells <= 1.0) + return 1; + + return (int)axis_cells; +} + /* * Compute the portion of 'target' covered by 'cover'. The caller supplies the * dimensionality because ND_BOX always carries four slots. Degenerate volumes commit b950728171f5d26fc3bbdd2f1cdf023cbffb0169 Author: Darafei Praliaskouski Date: Thu Oct 30 02:55:59 2025 +0400 Prevent histogram target overflow when analysing massive tables Add CUnit tests for overflow scenarios Closes #5959 diff --git a/NEWS b/NEWS index 4dec87f2a..b7fc26db9 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,10 @@ PostGIS 3.6.1 authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) +* Bug Fixes * + + - #5959, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + PostGIS 3.6.0 2025/09/01 diff --git a/configure.ac b/configure.ac index dbd4f59c3..12e26a06b 100644 --- a/configure.ac +++ b/configure.ac @@ -1927,6 +1927,7 @@ AC_CONFIG_FILES([GNUmakefile libpgcommon/Makefile libpgcommon/cunit/Makefile postgis/Makefile + postgis/cunit/Makefile postgis/sqldefines.h sfcgal/Makefile $SFCGAL_MAKEFILE_LIST diff --git a/postgis/cunit/Makefile.in b/postgis/cunit/Makefile.in new file mode 100644 index 000000000..483e4ca10 --- /dev/null +++ b/postgis/cunit/Makefile.in @@ -0,0 +1,43 @@ +# ********************************************************************** +# * +# * PostGIS - Spatial Types for PostgreSQL +# * http://postgis.net +# * +# * Copyright 2025 Darafei Praliaskouski +# * +# * This is free software; you can redistribute and/or modify it under +# * the terms of the GNU General Public Licence. See the COPYING file. +# * +# ********************************************************************** + +srcdir = @srcdir@ +top_builddir = @top_builddir@ + +CC=@CC@ +LIBTOOL=@LIBTOOL@ +CFLAGS = @CFLAGS@ @CPPFLAGS@ @PGSQL_BE_CPPFLAGS@ @CUNIT_CPPFLAGS@ -I.. -I$(top_builddir) -I at top_srcdir@/liblwgeom -I at top_builddir@/liblwgeom -I at top_srcdir@/libpgcommon -I at top_builddir@/libpgcommon +LDFLAGS = @CUNIT_LDFLAGS@ -lm + +VPATH = $(srcdir) + +OBJS = cu_tester.o + +# Build the standalone histogram helper tester. +all: cu_tester + +# Execute the suite directly; no installation step is required. +check: all + $(LIBTOOL) --mode=execute ./cu_tester + +# Link the tester with libtool; all helper code is header-only. +cu_tester: $(OBJS) + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS) + +%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean: + rm -f $(OBJS) cu_tester + +clobber distclean: clean + rm -f Makefile diff --git a/postgis/cunit/cu_tester.c b/postgis/cunit/cu_tester.c new file mode 100644 index 000000000..b4dd46aa7 --- /dev/null +++ b/postgis/cunit/cu_tester.c @@ -0,0 +1,154 @@ +/********************************************************************** + * + * PostGIS - Spatial Types for PostgreSQL + * http://postgis.net + * + * This file is part of PostGIS + * + * PostGIS 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. + * + * PostGIS 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 PostGIS. If not, see . + * + ********************************************************************** + * + * Copyright 2025 (C) Darafei Praliaskouski + * + **********************************************************************/ + +#include "postgres.h" + +#include +#include +#include + +#include "../gserialized_estimate_support.h" + +static ND_BOX +make_box(float minx, float miny, float minz, float minm, float maxx, float maxy, float maxz, float maxm) +{ + ND_BOX box; + + memset(&box, 0, sizeof(box)); + box.min[0] = minx; + box.min[1] = miny; + box.min[2] = minz; + box.min[3] = minm; + box.max[0] = maxx; + box.max[1] = maxy; + box.max[2] = maxz; + box.max[3] = maxm; + return box; +} + +static void +histogram_budget_clamps(void) +{ + /* Zero or negative row counts disable histogram construction. */ + CU_ASSERT_EQUAL(histogram_cell_budget(0.0, 2, 100), 0); + CU_ASSERT_EQUAL(histogram_cell_budget(-1.0, 4, 100), 0); + + /* Degenerate dimensionality cannot allocate histogram space. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1000.0, 0, 100), 0); + + /* Matches the classic pow(attstattarget, ndims) path. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 2, 100), 10000); + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 3, 50), 125000); + + /* attstattarget^ndims exceeds ndims * 100000 and must be clamped. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 4, 50), 400000); + + /* attstattarget<=0 is normalised to the smallest viable target. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 2, 0), 1); + + /* Row clamp shrinks the grid for small relations. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1.0, 2, 100), 20); + + /* Large tables now preserve the dimensional cap instead of overflowing. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1.5e8, 2, 100), 10000); + + /* Regression for #5984: huge attstat targets stabilise instead of wrapping. */ + CU_ASSERT_EQUAL(histogram_cell_budget(5e6, 2, 10000), 200000); + + /* Trigger the INT_MAX guard once both other caps exceed it. */ + CU_ASSERT_EQUAL(histogram_cell_budget((double)INT_MAX, 50000, INT_MAX), INT_MAX); +} + +static void +nd_stats_indexing_behaviour(void) +{ + ND_STATS stats; + const int good_index[ND_DIMS] = {1, 2, 0, 0}; + const int bad_index[ND_DIMS] = {1, 5, 0, 0}; + + memset(&stats, 0, sizeof(stats)); + stats.ndims = 3; + stats.size[0] = 4.0f; + stats.size[1] = 5.0f; + stats.size[2] = 3.0f; + + /* Three-dimensional index (x=1, y=2, z=0) collapses into 1 + 2 * 4. */ + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, good_index), 1 + 2 * 4); + /* Any request outside the histogram bounds triggers a guard. */ + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, bad_index), -1); + + /* Regression for #5959: ndims higher than populated sizes still honours guards. */ + stats.ndims = 4; + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, good_index), -1); +} + +static void +nd_box_ratio_cases(void) +{ + ND_BOX covering = make_box(0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 2.0f, 0.0f); + ND_BOX interior = make_box(0.5f, 0.5f, 0.5f, 0.0f, 1.5f, 1.5f, 1.5f, 0.0f); + ND_BOX partial = make_box(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f); + ND_BOX target = make_box(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f); + ND_BOX flat = make_box(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); + ND_BOX touch = make_box(2.0f, 0.0f, 0.0f, 0.0f, 3.0f, 1.0f, 1.0f, 0.0f); + + /* Full coverage should evaluate to one regardless of the extra extent. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &interior, 3), 1.0, 1e-12); + /* A shared octant carries one eighth of the reference volume. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&partial, &target, 3), 0.125, 1e-12); + /* Degenerate slabs have zero volume in three dimensions. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &flat, 3), 0.0, 1e-12); + /* Boxes that only touch along a face should not count as overlap. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &touch, 3), 0.0, 1e-12); +} + +int +main(void) +{ + CU_pSuite suite; + unsigned int failures = 0; + if (CU_initialize_registry() != CUE_SUCCESS) + return CU_get_error(); + + suite = CU_add_suite("gserialized_histogram_helpers", NULL, NULL); + if (!suite) + goto cleanup; + + if (!CU_add_test(suite, "histogram budget clamps", histogram_budget_clamps) || + !CU_add_test(suite, "nd_stats value index guards", nd_stats_indexing_behaviour) || + !CU_add_test(suite, "nd_box ratio edge cases", nd_box_ratio_cases)) + { + goto cleanup; + } + + CU_basic_set_mode(CU_BRM_VERBOSE); + CU_basic_run_tests(); + +cleanup: + failures = CU_get_number_of_tests_failed(); + CU_cleanup_registry(); + return failures == 0 ? CUE_SUCCESS : 1; +} diff --git a/postgis/gserialized_estimate.c b/postgis/gserialized_estimate.c index 1e84228b0..ea887ecb6 100644 --- a/postgis/gserialized_estimate.c +++ b/postgis/gserialized_estimate.c @@ -19,11 +19,10 @@ ********************************************************************** * * Copyright 2012 (C) Paul Ramsey + * Copyright 2025 (C) Darafei Praliaskouski * **********************************************************************/ - - /********************************************************************** THEORY OF OPERATION @@ -112,10 +111,12 @@ dimensionality cases. (2D geometry) &&& (3D column), etc. #include "stringbuffer.h" #include "liblwgeom.h" #include "lwgeodetic.h" -#include "lwgeom_pg.h" /* For debugging macros. */ +#include "lwgeom_pg.h" /* For debugging macros. */ #include "gserialized_gist.h" /* For index common functions */ +#include "gserialized_estimate_support.h" #include +#include #if HAVE_IEEEFP_H #include #endif @@ -144,8 +145,7 @@ Datum _postgis_gserialized_stats(PG_FUNCTION_ARGS); /* Local prototypes */ static Oid table_get_spatial_index(Oid tbl_oid, int16 attnum, int *key_type, int16 *idx_attnum); -static GBOX * spatial_index_read_extent(Oid idx_oid, int idx_att_num, int key_type); - +static GBOX *spatial_index_read_extent(Oid idx_oid, int idx_att_num, int key_type); /* Other prototypes */ float8 gserialized_joinsel_internal(PlannerInfo *root, List *args, JoinType jointype, int mode); @@ -186,13 +186,6 @@ Datum geometry_estimated_extent(PG_FUNCTION_ARGS); */ #define SDFACTOR 3.25 -/** -* The maximum number of dimensions our code can handle. -* We'll use this to statically allocate a bunch of -* arrays below. -*/ -#define ND_DIMS 4 - /** * Minimum width of a dimension that we'll bother trying to * compute statistics on. Bearing in mind we have no control @@ -219,68 +212,6 @@ Datum geometry_estimated_extent(PG_FUNCTION_ARGS); #define FALLBACK_ND_SEL 0.2 #define FALLBACK_ND_JOINSEL 0.3 -/** -* N-dimensional box type for calculations, to avoid doing -* explicit axis conversions from GBOX in all calculations -* at every step. -*/ -typedef struct ND_BOX_T -{ - float4 min[ND_DIMS]; - float4 max[ND_DIMS]; -} ND_BOX; - -/** -* N-dimensional box index type -*/ -typedef struct ND_IBOX_T -{ - int min[ND_DIMS]; - int max[ND_DIMS]; -} ND_IBOX; - - -/** -* N-dimensional statistics structure. Well, actually -* four-dimensional, but set up to handle arbitrary dimensions -* if necessary (really, we just want to get the 2,3,4-d cases -* into one shared piece of code). -*/ -typedef struct ND_STATS_T -{ - /* Dimensionality of the histogram. */ - float4 ndims; - - /* Size of n-d histogram in each dimension. */ - float4 size[ND_DIMS]; - - /* Lower-left (min) and upper-right (max) spatial bounds of histogram. */ - ND_BOX extent; - - /* How many rows in the table itself? */ - float4 table_features; - - /* How many rows were in the sample that built this histogram? */ - float4 sample_features; - - /* How many not-Null/Empty features were in the sample? */ - float4 not_null_features; - - /* How many features actually got sampled in the histogram? */ - float4 histogram_features; - - /* How many cells in histogram? (sizex*sizey*sizez*sizem) */ - float4 histogram_cells; - - /* How many cells did those histogram features cover? */ - /* Since we are pro-rating coverage, this number should */ - /* now always equal histogram_features */ - float4 cells_covered; - - /* Variable length # of floats for histogram */ - float4 value[1]; -} ND_STATS; - typedef struct { /* Saved state from std_typanalyze() */ AnalyzeAttrComputeStatsFunc std_compute_stats; @@ -318,13 +249,12 @@ text_p_get_mode(const text *txt) char *modestr; if (VARSIZE_ANY_EXHDR(txt) <= 0) return mode; - modestr = (char*)VARDATA(txt); - if ( modestr[0] == 'N' ) + modestr = (char *)VARDATA(txt); + if (modestr[0] == 'N') mode = 0; return mode; } - /** * Integer comparison function for qsort */ @@ -372,7 +302,7 @@ total_double(const double *vals, int nvals) int i; float total = 0; /* Calculate total */ - for ( i = 0; i < nvals; i++ ) + for (i = 0; i < nvals; i++) total += vals[i]; return total; @@ -425,33 +355,6 @@ stddev(const int *vals, int nvals) } #endif /* POSTGIS_DEBUG_LEVEL >= 3 */ -/** -* Given a position in the n-d histogram (i,j,k) return the -* position in the 1-d values array. -*/ -static int -nd_stats_value_index(const ND_STATS *stats, int *indexes) -{ - int d; - int accum = 1, vdx = 0; - - /* Calculate the index into the 1-d values array that the (i,j,k,l) */ - /* n-d histogram coordinate implies. */ - /* index = x + y * sizex + z * sizex * sizey + m * sizex * sizey * sizez */ - for ( d = 0; d < (int)(stats->ndims); d++ ) - { - int size = (int)(stats->size[d]); - if ( indexes[d] < 0 || indexes[d] >= size ) - { - POSTGIS_DEBUGF(3, " bad index at (%d, %d)", indexes[0], indexes[1]); - return -1; - } - vdx += indexes[d] * accum; - accum *= size; - } - return vdx; -} - /** * Convert an #ND_BOX to a JSON string for printing */ @@ -722,50 +625,6 @@ nd_box_overlap(const ND_STATS *nd_stats, const ND_BOX *nd_box, ND_IBOX *nd_ibox) return true; } -/** -* Returns the proportion of b2 that is covered by b1. -*/ -static inline double -nd_box_ratio(const ND_BOX *b1, const ND_BOX *b2, int ndims) -{ - int d; - bool covered = true; - double ivol = 1.0; - double vol2 = 1.0; - - for ( d = 0 ; d < ndims; d++ ) - { - if ( b1->max[d] <= b2->min[d] || b1->min[d] >= b2->max[d] ) - return 0.0; /* Disjoint */ - - if ( b1->min[d] > b2->min[d] || b1->max[d] < b2->max[d] ) - covered = false; - } - - if ( covered ) - return 1.0; - - for ( d = 0; d < ndims; d++ ) - { - double width2 = b2->max[d] - b2->min[d]; - double imin, imax, iwidth; - - vol2 *= width2; - - imin = Max(b1->min[d], b2->min[d]); - imax = Min(b1->max[d], b2->max[d]); - iwidth = imax - imin; - iwidth = Max(0.0, iwidth); - - ivol *= iwidth; - } - - if ( vol2 == 0.0 ) - return vol2; - - return ivol / vol2; -} - /* How many bins shall we use in figuring out the distribution? */ #define MAX_NUM_BINS 50 #define BIN_MIN_SIZE 10 @@ -894,9 +753,9 @@ nd_increment(ND_IBOX *ibox, int ndims, int *counter) { int d = 0; - while ( d < ndims ) + while (d < ndims) { - if ( counter[d] < ibox->max[d] ) + if (counter[d] < ibox->max[d]) { counter[d] += 1; break; @@ -905,7 +764,7 @@ nd_increment(ND_IBOX *ibox, int ndims, int *counter) d++; } /* That's it, cannot increment any more! */ - if ( d == ndims ) + if (d == ndims) return false; /* Increment complete! */ @@ -1321,9 +1180,9 @@ gserialized_joinsel_internal(PlannerInfo *root, List *args, JoinType jointype, i PG_FUNCTION_INFO_V1(gserialized_gist_joinsel); Datum gserialized_gist_joinsel(PG_FUNCTION_ARGS) { - PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); + PlannerInfo *root = (PlannerInfo *)PG_GETARG_POINTER(0); /* Oid operator = PG_GETARG_OID(1); */ - List *args = (List *) PG_GETARG_POINTER(2); + List *args = (List *)PG_GETARG_POINTER(2); JoinType jointype = (JoinType) PG_GETARG_INT16(3); int mode = PG_GETARG_INT32(4); @@ -1512,22 +1371,13 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu #endif } - /* - * We'll build a histogram having stats->attr->attstattarget - * (default 100) cells on each side, within reason... - * we'll use ndims*100000 as the maximum number of cells. - * Also, if we're sampling a relatively small table, we'll try to ensure that - * we have a smaller grid. - */ #if POSTGIS_PGSQL_VERSION >= 170 - histo_cells_target = (int)pow((double)(stats->attstattarget), (double)ndims); POSTGIS_DEBUGF(3, " stats->attstattarget: %d", stats->attstattarget); + histo_cells_target = histogram_cell_budget(total_rows, ndims, stats->attstattarget); #else - histo_cells_target = (int)pow((double)(stats->attr->attstattarget), (double)ndims); POSTGIS_DEBUGF(3, " stats->attr->attstattarget: %d", stats->attr->attstattarget); + histo_cells_target = histogram_cell_budget(total_rows, ndims, stats->attr->attstattarget); #endif - histo_cells_target = Min(histo_cells_target, ndims * 100000); - histo_cells_target = Min(histo_cells_target, (int)(10 * ndims * total_rows)); POSTGIS_DEBUGF(3, " target # of histogram cells: %d", histo_cells_target); /* If there's no useful features, we can't work out stats */ @@ -1836,8 +1686,6 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu return; } - - /** * In order to do useful selectivity calculations in both 2-D and N-D * modes, we actually have to generate two stats objects, one for 2-D @@ -1875,7 +1723,6 @@ compute_gserialized_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc, } } - /** * This function will be called when the ANALYZE command is run * on a column of the "geometry" or "geography" type. diff --git a/postgis/gserialized_estimate_support.h b/postgis/gserialized_estimate_support.h new file mode 100644 index 000000000..0d3a23d75 --- /dev/null +++ b/postgis/gserialized_estimate_support.h @@ -0,0 +1,197 @@ +/********************************************************************** + * + * PostGIS - Spatial Types for PostgreSQL + * http://postgis.net + * + * This file is part of PostGIS + * + * PostGIS 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. + * + * PostGIS 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 PostGIS. If not, see . + * + ********************************************************************** + * + * Internal helpers shared between the gserialized selectivity + * implementation and the unit tests. + * + * Keeping the routines header-only ensures the planner code and the + * harness evaluate the exact same floating-point flows without the + * cross-object plumbing that previously complicated maintenance. + * Nothing here is installed; the header is meant for + * gserialized_estimate.c and for the dedicated CUnit suite only. + * + ********************************************************************** + * + * Copyright 2012 (C) Paul Ramsey + * Copyright 2025 (C) Darafei Praliaskouski + * + **********************************************************************/ + +#ifndef POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H +#define POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H + +#include "postgres.h" + +#include +#include + +/* The maximum number of dimensions our statistics code supports. */ +#define ND_DIMS 4 + +/* Lightweight n-dimensional box representation for selectivity math. */ +typedef struct ND_BOX_T { + float4 min[ND_DIMS]; + float4 max[ND_DIMS]; +} ND_BOX; + +/* Integer counterpart used for histogram cell iteration. */ +typedef struct ND_IBOX_T { + int min[ND_DIMS]; + int max[ND_DIMS]; +} ND_IBOX; + +/* On-disk representation of the histogram emitted by ANALYZE. */ +typedef struct ND_STATS_T { + float4 ndims; + float4 size[ND_DIMS]; + ND_BOX extent; + float4 table_features; + float4 sample_features; + float4 not_null_features; + float4 histogram_features; + float4 histogram_cells; + float4 cells_covered; + float4 value[1]; +} ND_STATS; + +/* + * Return the flattened index for the histogram coordinate expressed by + * 'indexes'. A negative result signals that one of the axes fell outside + * the histogram definition. + */ +static inline int +nd_stats_value_index(const ND_STATS *stats, const int *indexes) +{ + int d; + int accum = 1; + int vdx = 0; + + for (d = 0; d < (int)(stats->ndims); d++) + { + int size = (int)(stats->size[d]); + if (indexes[d] < 0 || indexes[d] >= size) + return -1; + vdx += indexes[d] * accum; + accum *= size; + } + return vdx; +} + +/* + * Derive the histogram grid budget requested by PostgreSQL's ANALYZE machinery. + * The planner caps the cell count via three heuristics that take the requested + * attstattarget, the histogram dimensionality, and the underlying row count + * into account. Double precision arithmetic keeps the intermediate products in + * range so the cap behaves consistently across build architectures. + */ +static inline int +histogram_cell_budget(double total_rows, int ndims, int attstattarget) +{ + double budget; + double dims_cap; + double rows_cap; + double attstat; + double dims; + + if (ndims <= 0) + return 0; + + if (attstattarget <= 0) + attstattarget = 1; + + /* Requested resolution coming from PostgreSQL's ANALYZE knob. */ + attstat = (double)attstattarget; + dims = (double)ndims; + budget = pow(attstat, dims); + + /* Hard ceiling that keeps the statistics collector responsive. */ + dims_cap = (double)ndims * 100000.0; + if (budget > dims_cap) + budget = dims_cap; + + /* Small relations do not need a histogram that dwarfs the sample. */ + if (total_rows <= 0.0) + return 0; + + rows_cap = 10.0 * (double)ndims * total_rows; + if (rows_cap < 0.0) + rows_cap = 0.0; + + /* Keep intermediate computations in double precision before clamping. */ + if (rows_cap > (double)INT_MAX) + rows_cap = (double)INT_MAX; + + if (budget > rows_cap) + budget = rows_cap; + + if (budget >= (double)INT_MAX) + return INT_MAX; + if (budget <= 0.0) + return 0; + + return (int)budget; +} + +/* + * Compute the portion of 'target' covered by 'cover'. The caller supplies the + * dimensionality because ND_BOX always carries four slots. Degenerate volumes + * fold to zero, allowing the callers to detect slabs that ANALYZE sometimes + * emits for skewed datasets. + */ +static inline double +nd_box_ratio(const ND_BOX *cover, const ND_BOX *target, int ndims) +{ + int d; + bool fully_covered = true; + double ivol = 1.0; + double refvol = 1.0; + + for (d = 0; d < ndims; d++) + { + if (cover->max[d] <= target->min[d] || cover->min[d] >= target->max[d]) + return 0.0; /* Disjoint */ + + if (cover->min[d] > target->min[d] || cover->max[d] < target->max[d]) + fully_covered = false; + } + + if (fully_covered) + return 1.0; + + for (d = 0; d < ndims; d++) + { + double width = target->max[d] - target->min[d]; + double imin = Max(cover->min[d], target->min[d]); + double imax = Min(cover->max[d], target->max[d]); + double iwidth = Max(0.0, imax - imin); + + refvol *= width; + ivol *= iwidth; + } + + if (refvol == 0.0) + return refvol; + + return ivol / refvol; +} + +#endif /* POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H */ ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + configure.ac | 1 + postgis/cunit/Makefile.in | 43 ++++++ postgis/cunit/cu_tester.c | 173 ++++++++++++++++++++++++ postgis/gserialized_estimate.c | 192 +++----------------------- postgis/gserialized_estimate_support.h | 237 +++++++++++++++++++++++++++++++++ 6 files changed, 474 insertions(+), 173 deletions(-) create mode 100644 postgis/cunit/Makefile.in create mode 100644 postgis/cunit/cu_tester.c create mode 100644 postgis/gserialized_estimate_support.h hooks/post-receive -- PostGIS From trac at osgeo.org Fri Nov 7 10:35:20 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:35:20 -0000 Subject: [PostGIS] #5959: Query planner vastly underestimates number of rows matched by GIST index In-Reply-To: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> References: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> Message-ID: <064.2043e0c31d31776329d331e14b5be9bc@osgeo.org> #5959: Query planner vastly underestimates number of rows matched by GIST index ----------------------+--------------------------- Reporter: alexobs | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"b950728171f5d26fc3bbdd2f1cdf023cbffb0169/git" b9507281/git]: {{{#!CommitTicketReference repository="git" revision="b950728171f5d26fc3bbdd2f1cdf023cbffb0169" Prevent histogram target overflow when analysing massive tables Add CUnit tests for overflow scenarios Closes #5959 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 10:35:20 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:35:20 -0000 Subject: [PostGIS] #5959: Query planner vastly underestimates number of rows matched by GIST index In-Reply-To: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> References: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> Message-ID: <064.6140dfd55976fea23b597deb3811b473@osgeo.org> #5959: Query planner vastly underestimates number of rows matched by GIST index ----------------------+--------------------------- Reporter: alexobs | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"a518412e516d4c7b216fd2f2797b20495d095e44/git" a518412/git]: {{{#!CommitTicketReference repository="git" revision="a518412e516d4c7b216fd2f2797b20495d095e44" Guard against histogram axis dimension underflow References #5959 References #5984 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 10:35:21 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:35:21 -0000 Subject: [PostGIS] #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate In-Reply-To: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> References: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> Message-ID: <061.a6aa26143184c331a51f583be55d7451@osgeo.org> #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate -----------------------+--------------------------- Reporter: robe | Owner: komzpa Type: defect | Status: new Priority: critical | Milestone: PostGIS 3.4.5 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"a518412e516d4c7b216fd2f2797b20495d095e44/git" a518412/git]: {{{#!CommitTicketReference repository="git" revision="a518412e516d4c7b216fd2f2797b20495d095e44" Guard against histogram axis dimension underflow References #5959 References #5984 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 10:35:21 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:35:21 -0000 Subject: [PostGIS] #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate In-Reply-To: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> References: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> Message-ID: <061.76c1d7aa7304dea9873a20129721cd06@osgeo.org> #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate -----------------------+--------------------------- Reporter: robe | Owner: komzpa Type: defect | Status: closed Priority: critical | Milestone: PostGIS 3.4.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: -----------------------+--------------------------- Changes (by Darafei Praliaskouski ): * resolution: => fixed * status: new => closed Comment: In [changeset:"21517f662368c90bbee0dfdebff3cb82059467fd/git" 21517f6/git]: {{{#!CommitTicketReference repository="git" revision="21517f662368c90bbee0dfdebff3cb82059467fd" Touch up NEWS Closes #5984 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 7 10:47:39 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 7 Nov 2025 10:47:39 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-5-g06fbe94ff Message-ID: <20251107184740.6179519FBB6@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.5 has been updated via 06fbe94ffe37c1e9d26328b7554c2050feaae1b6 (commit) via 6b8bae5486f12dc53634f1d7982186c6413d0ef5 (commit) from 949a623cd0afc9802ebb228d8dc7b477272b9b18 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 06fbe94ffe37c1e9d26328b7554c2050feaae1b6 Author: Darafei Praliaskouski Date: Thu Oct 30 03:46:26 2025 +0400 Guard against histogram axis dimension underflow References #5959 References #5984 diff --git a/NEWS b/NEWS index df71a295a..075318f84 100644 --- a/NEWS +++ b/NEWS @@ -6,11 +6,7 @@ PostgreSQL 12-18 required. GEOS 3.8+ required. Proj 6.1+ required. * Bug fixes * - - -* Bug Fixes * - - - #5959, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) PostGIS 3.5.4 @@ -3083,4 +3079,3 @@ PostGIS 0.1 - truely_inside() - rtree index support functions - gist index support functions - diff --git a/postgis/cunit/cu_tester.c b/postgis/cunit/cu_tester.c index b4dd46aa7..eb6ba5b0d 100644 --- a/postgis/cunit/cu_tester.c +++ b/postgis/cunit/cu_tester.c @@ -28,6 +28,7 @@ #include #include +#include #include #include "../gserialized_estimate_support.h" @@ -82,6 +83,23 @@ histogram_budget_clamps(void) CU_ASSERT_EQUAL(histogram_cell_budget((double)INT_MAX, 50000, INT_MAX), INT_MAX); } +static void +histogram_axis_allocation_guards(void) +{ + /* Baseline: evenly split a 10k target over two varying dimensions. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, 0.5), 100); + + /* Skewed axis ratios that collapse to tiny powers still return one cell. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, 1e-9), 1); + + /* Denormals, NaNs and negative ratios should not leak to the histogram. */ + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, NAN), 1); + CU_ASSERT_EQUAL(histogram_axis_cells(10000, 2, -0.5), 1); + + /* Extremely aggressive ratios remain bounded by the square root of the budget. */ + CU_ASSERT_EQUAL(histogram_axis_cells(INT_MAX, 2, 1.0), (int)sqrt((double)INT_MAX * 2.0)); +} + static void nd_stats_indexing_behaviour(void) { @@ -138,6 +156,7 @@ main(void) goto cleanup; if (!CU_add_test(suite, "histogram budget clamps", histogram_budget_clamps) || + !CU_add_test(suite, "histogram axis guards", histogram_axis_allocation_guards) || !CU_add_test(suite, "nd_stats value index guards", nd_stats_indexing_behaviour) || !CU_add_test(suite, "nd_box ratio edge cases", nd_box_ratio_cases)) { diff --git a/postgis/gserialized_estimate.c b/postgis/gserialized_estimate.c index 072d60a1c..e561fd5dd 100644 --- a/postgis/gserialized_estimate.c +++ b/postgis/gserialized_estimate.c @@ -1516,11 +1516,10 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu * Scale the target cells number by the # of dims and ratio, * then take the appropriate root to get the estimated number of cells * on this axis (eg, pow(0.5) for 2d, pow(0.333) for 3d, pow(0.25) for 4d) - */ - histo_size[d] = (int)pow((double)histo_cells_target * histo_ndims * edge_ratio, 1/(double)histo_ndims); - /* If something goes awry, just give this dim one slot */ - if ( ! histo_size[d] ) - histo_size[d] = 1; + * The dedicated helper clamps pathological floating point inputs so we + * do not resurrect the NaN propagation reported in #5959 on amd64. + */ + histo_size[d] = histogram_axis_cells(histo_cells_target, histo_ndims, edge_ratio); } histo_cells_new *= histo_size[d]; } diff --git a/postgis/gserialized_estimate_support.h b/postgis/gserialized_estimate_support.h index 0d3a23d75..6b372a43e 100644 --- a/postgis/gserialized_estimate_support.h +++ b/postgis/gserialized_estimate_support.h @@ -151,6 +151,46 @@ histogram_cell_budget(double total_rows, int ndims, int attstattarget) return (int)budget; } +/* + * Allocate histogram buckets along a single axis in proportion to the observed + * density variation. The caller passes in the global histogram target along + * with the number of axes that exhibited variation in the sampled data and the + * relative contribution of the current axis (edge_ratio). Earlier versions + * evaluated the pow() call directly in the caller, which exposed the planner to + * NaN propagation on some amd64 builds when the ratio was denormal or negative + * (see #5959). Keeping the calculation in one place allows us to clamp the + * inputs and provide a predictable fallback for problematic floating point + * combinations. + */ +static inline int +histogram_axis_cells(int histo_cells_target, int histo_ndims, double edge_ratio) +{ + double scaled; + double axis_cells; + + if (histo_cells_target <= 0 || histo_ndims <= 0) + return 1; + + if (!(edge_ratio > 0.0) || !isfinite(edge_ratio)) + return 1; + + scaled = (double)histo_cells_target * (double)histo_ndims * edge_ratio; + if (!(scaled > 0.0) || !isfinite(scaled)) + return 1; + + axis_cells = pow(scaled, 1.0 / (double)histo_ndims); + if (!(axis_cells > 0.0) || !isfinite(axis_cells)) + return 1; + + if (axis_cells >= (double)INT_MAX) + return INT_MAX; + + if (axis_cells <= 1.0) + return 1; + + return (int)axis_cells; +} + /* * Compute the portion of 'target' covered by 'cover'. The caller supplies the * dimensionality because ND_BOX always carries four slots. Degenerate volumes commit 6b8bae5486f12dc53634f1d7982186c6413d0ef5 Author: Darafei Praliaskouski Date: Thu Oct 30 02:55:59 2025 +0400 Prevent histogram target overflow when analysing massive tables Add CUnit tests for overflow scenarios Closes #5959 diff --git a/NEWS b/NEWS index 72aaf5e0d..df71a295a 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,10 @@ PostgreSQL 12-18 required. GEOS 3.8+ required. Proj 6.1+ required. +* Bug Fixes * + + - #5959, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + PostGIS 3.5.4 2025/10/16 diff --git a/configure.ac b/configure.ac index a60828c9d..0411756d7 100644 --- a/configure.ac +++ b/configure.ac @@ -1905,6 +1905,7 @@ AC_CONFIG_FILES([GNUmakefile libpgcommon/Makefile libpgcommon/cunit/Makefile postgis/Makefile + postgis/cunit/Makefile postgis/sqldefines.h sfcgal/Makefile $SFCGAL_MAKEFILE_LIST diff --git a/postgis/cunit/Makefile.in b/postgis/cunit/Makefile.in new file mode 100644 index 000000000..483e4ca10 --- /dev/null +++ b/postgis/cunit/Makefile.in @@ -0,0 +1,43 @@ +# ********************************************************************** +# * +# * PostGIS - Spatial Types for PostgreSQL +# * http://postgis.net +# * +# * Copyright 2025 Darafei Praliaskouski +# * +# * This is free software; you can redistribute and/or modify it under +# * the terms of the GNU General Public Licence. See the COPYING file. +# * +# ********************************************************************** + +srcdir = @srcdir@ +top_builddir = @top_builddir@ + +CC=@CC@ +LIBTOOL=@LIBTOOL@ +CFLAGS = @CFLAGS@ @CPPFLAGS@ @PGSQL_BE_CPPFLAGS@ @CUNIT_CPPFLAGS@ -I.. -I$(top_builddir) -I at top_srcdir@/liblwgeom -I at top_builddir@/liblwgeom -I at top_srcdir@/libpgcommon -I at top_builddir@/libpgcommon +LDFLAGS = @CUNIT_LDFLAGS@ -lm + +VPATH = $(srcdir) + +OBJS = cu_tester.o + +# Build the standalone histogram helper tester. +all: cu_tester + +# Execute the suite directly; no installation step is required. +check: all + $(LIBTOOL) --mode=execute ./cu_tester + +# Link the tester with libtool; all helper code is header-only. +cu_tester: $(OBJS) + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS) + +%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean: + rm -f $(OBJS) cu_tester + +clobber distclean: clean + rm -f Makefile diff --git a/postgis/cunit/cu_tester.c b/postgis/cunit/cu_tester.c new file mode 100644 index 000000000..b4dd46aa7 --- /dev/null +++ b/postgis/cunit/cu_tester.c @@ -0,0 +1,154 @@ +/********************************************************************** + * + * PostGIS - Spatial Types for PostgreSQL + * http://postgis.net + * + * This file is part of PostGIS + * + * PostGIS 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. + * + * PostGIS 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 PostGIS. If not, see . + * + ********************************************************************** + * + * Copyright 2025 (C) Darafei Praliaskouski + * + **********************************************************************/ + +#include "postgres.h" + +#include +#include +#include + +#include "../gserialized_estimate_support.h" + +static ND_BOX +make_box(float minx, float miny, float minz, float minm, float maxx, float maxy, float maxz, float maxm) +{ + ND_BOX box; + + memset(&box, 0, sizeof(box)); + box.min[0] = minx; + box.min[1] = miny; + box.min[2] = minz; + box.min[3] = minm; + box.max[0] = maxx; + box.max[1] = maxy; + box.max[2] = maxz; + box.max[3] = maxm; + return box; +} + +static void +histogram_budget_clamps(void) +{ + /* Zero or negative row counts disable histogram construction. */ + CU_ASSERT_EQUAL(histogram_cell_budget(0.0, 2, 100), 0); + CU_ASSERT_EQUAL(histogram_cell_budget(-1.0, 4, 100), 0); + + /* Degenerate dimensionality cannot allocate histogram space. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1000.0, 0, 100), 0); + + /* Matches the classic pow(attstattarget, ndims) path. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 2, 100), 10000); + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 3, 50), 125000); + + /* attstattarget^ndims exceeds ndims * 100000 and must be clamped. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 4, 50), 400000); + + /* attstattarget<=0 is normalised to the smallest viable target. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1e6, 2, 0), 1); + + /* Row clamp shrinks the grid for small relations. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1.0, 2, 100), 20); + + /* Large tables now preserve the dimensional cap instead of overflowing. */ + CU_ASSERT_EQUAL(histogram_cell_budget(1.5e8, 2, 100), 10000); + + /* Regression for #5984: huge attstat targets stabilise instead of wrapping. */ + CU_ASSERT_EQUAL(histogram_cell_budget(5e6, 2, 10000), 200000); + + /* Trigger the INT_MAX guard once both other caps exceed it. */ + CU_ASSERT_EQUAL(histogram_cell_budget((double)INT_MAX, 50000, INT_MAX), INT_MAX); +} + +static void +nd_stats_indexing_behaviour(void) +{ + ND_STATS stats; + const int good_index[ND_DIMS] = {1, 2, 0, 0}; + const int bad_index[ND_DIMS] = {1, 5, 0, 0}; + + memset(&stats, 0, sizeof(stats)); + stats.ndims = 3; + stats.size[0] = 4.0f; + stats.size[1] = 5.0f; + stats.size[2] = 3.0f; + + /* Three-dimensional index (x=1, y=2, z=0) collapses into 1 + 2 * 4. */ + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, good_index), 1 + 2 * 4); + /* Any request outside the histogram bounds triggers a guard. */ + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, bad_index), -1); + + /* Regression for #5959: ndims higher than populated sizes still honours guards. */ + stats.ndims = 4; + CU_ASSERT_EQUAL(nd_stats_value_index(&stats, good_index), -1); +} + +static void +nd_box_ratio_cases(void) +{ + ND_BOX covering = make_box(0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 2.0f, 2.0f, 0.0f); + ND_BOX interior = make_box(0.5f, 0.5f, 0.5f, 0.0f, 1.5f, 1.5f, 1.5f, 0.0f); + ND_BOX partial = make_box(0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f); + ND_BOX target = make_box(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f); + ND_BOX flat = make_box(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); + ND_BOX touch = make_box(2.0f, 0.0f, 0.0f, 0.0f, 3.0f, 1.0f, 1.0f, 0.0f); + + /* Full coverage should evaluate to one regardless of the extra extent. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &interior, 3), 1.0, 1e-12); + /* A shared octant carries one eighth of the reference volume. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&partial, &target, 3), 0.125, 1e-12); + /* Degenerate slabs have zero volume in three dimensions. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &flat, 3), 0.0, 1e-12); + /* Boxes that only touch along a face should not count as overlap. */ + CU_ASSERT_DOUBLE_EQUAL(nd_box_ratio(&covering, &touch, 3), 0.0, 1e-12); +} + +int +main(void) +{ + CU_pSuite suite; + unsigned int failures = 0; + if (CU_initialize_registry() != CUE_SUCCESS) + return CU_get_error(); + + suite = CU_add_suite("gserialized_histogram_helpers", NULL, NULL); + if (!suite) + goto cleanup; + + if (!CU_add_test(suite, "histogram budget clamps", histogram_budget_clamps) || + !CU_add_test(suite, "nd_stats value index guards", nd_stats_indexing_behaviour) || + !CU_add_test(suite, "nd_box ratio edge cases", nd_box_ratio_cases)) + { + goto cleanup; + } + + CU_basic_set_mode(CU_BRM_VERBOSE); + CU_basic_run_tests(); + +cleanup: + failures = CU_get_number_of_tests_failed(); + CU_cleanup_registry(); + return failures == 0 ? CUE_SUCCESS : 1; +} diff --git a/postgis/gserialized_estimate.c b/postgis/gserialized_estimate.c index 24984e9d7..072d60a1c 100644 --- a/postgis/gserialized_estimate.c +++ b/postgis/gserialized_estimate.c @@ -19,11 +19,10 @@ ********************************************************************** * * Copyright 2012 (C) Paul Ramsey + * Copyright 2025 (C) Darafei Praliaskouski * **********************************************************************/ - - /********************************************************************** THEORY OF OPERATION @@ -112,10 +111,12 @@ dimensionality cases. (2D geometry) &&& (3D column), etc. #include "stringbuffer.h" #include "liblwgeom.h" #include "lwgeodetic.h" -#include "lwgeom_pg.h" /* For debugging macros. */ +#include "lwgeom_pg.h" /* For debugging macros. */ #include "gserialized_gist.h" /* For index common functions */ +#include "gserialized_estimate_support.h" #include +#include #if HAVE_IEEEFP_H #include #endif @@ -144,8 +145,7 @@ Datum _postgis_gserialized_stats(PG_FUNCTION_ARGS); /* Local prototypes */ static Oid table_get_spatial_index(Oid tbl_oid, int16 attnum, int *key_type, int16 *idx_attnum); -static GBOX * spatial_index_read_extent(Oid idx_oid, int idx_att_num, int key_type); - +static GBOX *spatial_index_read_extent(Oid idx_oid, int idx_att_num, int key_type); /* Other prototypes */ float8 gserialized_joinsel_internal(PlannerInfo *root, List *args, JoinType jointype, int mode); @@ -186,13 +186,6 @@ Datum geometry_estimated_extent(PG_FUNCTION_ARGS); */ #define SDFACTOR 3.25 -/** -* The maximum number of dimensions our code can handle. -* We'll use this to statically allocate a bunch of -* arrays below. -*/ -#define ND_DIMS 4 - /** * Minimum width of a dimension that we'll bother trying to * compute statistics on. Bearing in mind we have no control @@ -219,68 +212,6 @@ Datum geometry_estimated_extent(PG_FUNCTION_ARGS); #define FALLBACK_ND_SEL 0.2 #define FALLBACK_ND_JOINSEL 0.3 -/** -* N-dimensional box type for calculations, to avoid doing -* explicit axis conversions from GBOX in all calculations -* at every step. -*/ -typedef struct ND_BOX_T -{ - float4 min[ND_DIMS]; - float4 max[ND_DIMS]; -} ND_BOX; - -/** -* N-dimensional box index type -*/ -typedef struct ND_IBOX_T -{ - int min[ND_DIMS]; - int max[ND_DIMS]; -} ND_IBOX; - - -/** -* N-dimensional statistics structure. Well, actually -* four-dimensional, but set up to handle arbitrary dimensions -* if necessary (really, we just want to get the 2,3,4-d cases -* into one shared piece of code). -*/ -typedef struct ND_STATS_T -{ - /* Dimensionality of the histogram. */ - float4 ndims; - - /* Size of n-d histogram in each dimension. */ - float4 size[ND_DIMS]; - - /* Lower-left (min) and upper-right (max) spatial bounds of histogram. */ - ND_BOX extent; - - /* How many rows in the table itself? */ - float4 table_features; - - /* How many rows were in the sample that built this histogram? */ - float4 sample_features; - - /* How many not-Null/Empty features were in the sample? */ - float4 not_null_features; - - /* How many features actually got sampled in the histogram? */ - float4 histogram_features; - - /* How many cells in histogram? (sizex*sizey*sizez*sizem) */ - float4 histogram_cells; - - /* How many cells did those histogram features cover? */ - /* Since we are pro-rating coverage, this number should */ - /* now always equal histogram_features */ - float4 cells_covered; - - /* Variable length # of floats for histogram */ - float4 value[1]; -} ND_STATS; - typedef struct { /* Saved state from std_typanalyze() */ AnalyzeAttrComputeStatsFunc std_compute_stats; @@ -318,13 +249,12 @@ text_p_get_mode(const text *txt) char *modestr; if (VARSIZE_ANY_EXHDR(txt) <= 0) return mode; - modestr = (char*)VARDATA(txt); - if ( modestr[0] == 'N' ) + modestr = (char *)VARDATA(txt); + if (modestr[0] == 'N') mode = 0; return mode; } - /** * Integer comparison function for qsort */ @@ -372,7 +302,7 @@ total_double(const double *vals, int nvals) int i; float total = 0; /* Calculate total */ - for ( i = 0; i < nvals; i++ ) + for (i = 0; i < nvals; i++) total += vals[i]; return total; @@ -425,33 +355,6 @@ stddev(const int *vals, int nvals) } #endif /* POSTGIS_DEBUG_LEVEL >= 3 */ -/** -* Given a position in the n-d histogram (i,j,k) return the -* position in the 1-d values array. -*/ -static int -nd_stats_value_index(const ND_STATS *stats, int *indexes) -{ - int d; - int accum = 1, vdx = 0; - - /* Calculate the index into the 1-d values array that the (i,j,k,l) */ - /* n-d histogram coordinate implies. */ - /* index = x + y * sizex + z * sizex * sizey + m * sizex * sizey * sizez */ - for ( d = 0; d < (int)(stats->ndims); d++ ) - { - int size = (int)(stats->size[d]); - if ( indexes[d] < 0 || indexes[d] >= size ) - { - POSTGIS_DEBUGF(3, " bad index at (%d, %d)", indexes[0], indexes[1]); - return -1; - } - vdx += indexes[d] * accum; - accum *= size; - } - return vdx; -} - /** * Convert an #ND_BOX to a JSON string for printing */ @@ -722,50 +625,6 @@ nd_box_overlap(const ND_STATS *nd_stats, const ND_BOX *nd_box, ND_IBOX *nd_ibox) return true; } -/** -* Returns the proportion of b2 that is covered by b1. -*/ -static inline double -nd_box_ratio(const ND_BOX *b1, const ND_BOX *b2, int ndims) -{ - int d; - bool covered = true; - double ivol = 1.0; - double vol2 = 1.0; - - for ( d = 0 ; d < ndims; d++ ) - { - if ( b1->max[d] <= b2->min[d] || b1->min[d] >= b2->max[d] ) - return 0.0; /* Disjoint */ - - if ( b1->min[d] > b2->min[d] || b1->max[d] < b2->max[d] ) - covered = false; - } - - if ( covered ) - return 1.0; - - for ( d = 0; d < ndims; d++ ) - { - double width2 = b2->max[d] - b2->min[d]; - double imin, imax, iwidth; - - vol2 *= width2; - - imin = Max(b1->min[d], b2->min[d]); - imax = Min(b1->max[d], b2->max[d]); - iwidth = imax - imin; - iwidth = Max(0.0, iwidth); - - ivol *= iwidth; - } - - if ( vol2 == 0.0 ) - return vol2; - - return ivol / vol2; -} - /* How many bins shall we use in figuring out the distribution? */ #define MAX_NUM_BINS 50 #define BIN_MIN_SIZE 10 @@ -894,9 +753,9 @@ nd_increment(ND_IBOX *ibox, int ndims, int *counter) { int d = 0; - while ( d < ndims ) + while (d < ndims) { - if ( counter[d] < ibox->max[d] ) + if (counter[d] < ibox->max[d]) { counter[d] += 1; break; @@ -905,7 +764,7 @@ nd_increment(ND_IBOX *ibox, int ndims, int *counter) d++; } /* That's it, cannot increment any more! */ - if ( d == ndims ) + if (d == ndims) return false; /* Increment complete! */ @@ -1321,9 +1180,9 @@ gserialized_joinsel_internal(PlannerInfo *root, List *args, JoinType jointype, i PG_FUNCTION_INFO_V1(gserialized_gist_joinsel); Datum gserialized_gist_joinsel(PG_FUNCTION_ARGS) { - PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); + PlannerInfo *root = (PlannerInfo *)PG_GETARG_POINTER(0); /* Oid operator = PG_GETARG_OID(1); */ - List *args = (List *) PG_GETARG_POINTER(2); + List *args = (List *)PG_GETARG_POINTER(2); JoinType jointype = (JoinType) PG_GETARG_INT16(3); int mode = PG_GETARG_INT32(4); @@ -1512,22 +1371,13 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu #endif } - /* - * We'll build a histogram having stats->attr->attstattarget - * (default 100) cells on each side, within reason... - * we'll use ndims*100000 as the maximum number of cells. - * Also, if we're sampling a relatively small table, we'll try to ensure that - * we have a smaller grid. - */ #if POSTGIS_PGSQL_VERSION >= 170 - histo_cells_target = (int)pow((double)(stats->attstattarget), (double)ndims); POSTGIS_DEBUGF(3, " stats->attstattarget: %d", stats->attstattarget); + histo_cells_target = histogram_cell_budget(total_rows, ndims, stats->attstattarget); #else - histo_cells_target = (int)pow((double)(stats->attr->attstattarget), (double)ndims); POSTGIS_DEBUGF(3, " stats->attr->attstattarget: %d", stats->attr->attstattarget); + histo_cells_target = histogram_cell_budget(total_rows, ndims, stats->attr->attstattarget); #endif - histo_cells_target = Min(histo_cells_target, ndims * 100000); - histo_cells_target = Min(histo_cells_target, (int)(10 * ndims * total_rows)); POSTGIS_DEBUGF(3, " target # of histogram cells: %d", histo_cells_target); /* If there's no useful features, we can't work out stats */ @@ -1836,8 +1686,6 @@ compute_gserialized_stats_mode(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfu return; } - - /** * In order to do useful selectivity calculations in both 2-D and N-D * modes, we actually have to generate two stats objects, one for 2-D @@ -1875,7 +1723,6 @@ compute_gserialized_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc, } } - /** * This function will be called when the ANALYZE command is run * on a column of the "geometry" or "geography" type. diff --git a/postgis/gserialized_estimate_support.h b/postgis/gserialized_estimate_support.h new file mode 100644 index 000000000..0d3a23d75 --- /dev/null +++ b/postgis/gserialized_estimate_support.h @@ -0,0 +1,197 @@ +/********************************************************************** + * + * PostGIS - Spatial Types for PostgreSQL + * http://postgis.net + * + * This file is part of PostGIS + * + * PostGIS 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. + * + * PostGIS 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 PostGIS. If not, see . + * + ********************************************************************** + * + * Internal helpers shared between the gserialized selectivity + * implementation and the unit tests. + * + * Keeping the routines header-only ensures the planner code and the + * harness evaluate the exact same floating-point flows without the + * cross-object plumbing that previously complicated maintenance. + * Nothing here is installed; the header is meant for + * gserialized_estimate.c and for the dedicated CUnit suite only. + * + ********************************************************************** + * + * Copyright 2012 (C) Paul Ramsey + * Copyright 2025 (C) Darafei Praliaskouski + * + **********************************************************************/ + +#ifndef POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H +#define POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H + +#include "postgres.h" + +#include +#include + +/* The maximum number of dimensions our statistics code supports. */ +#define ND_DIMS 4 + +/* Lightweight n-dimensional box representation for selectivity math. */ +typedef struct ND_BOX_T { + float4 min[ND_DIMS]; + float4 max[ND_DIMS]; +} ND_BOX; + +/* Integer counterpart used for histogram cell iteration. */ +typedef struct ND_IBOX_T { + int min[ND_DIMS]; + int max[ND_DIMS]; +} ND_IBOX; + +/* On-disk representation of the histogram emitted by ANALYZE. */ +typedef struct ND_STATS_T { + float4 ndims; + float4 size[ND_DIMS]; + ND_BOX extent; + float4 table_features; + float4 sample_features; + float4 not_null_features; + float4 histogram_features; + float4 histogram_cells; + float4 cells_covered; + float4 value[1]; +} ND_STATS; + +/* + * Return the flattened index for the histogram coordinate expressed by + * 'indexes'. A negative result signals that one of the axes fell outside + * the histogram definition. + */ +static inline int +nd_stats_value_index(const ND_STATS *stats, const int *indexes) +{ + int d; + int accum = 1; + int vdx = 0; + + for (d = 0; d < (int)(stats->ndims); d++) + { + int size = (int)(stats->size[d]); + if (indexes[d] < 0 || indexes[d] >= size) + return -1; + vdx += indexes[d] * accum; + accum *= size; + } + return vdx; +} + +/* + * Derive the histogram grid budget requested by PostgreSQL's ANALYZE machinery. + * The planner caps the cell count via three heuristics that take the requested + * attstattarget, the histogram dimensionality, and the underlying row count + * into account. Double precision arithmetic keeps the intermediate products in + * range so the cap behaves consistently across build architectures. + */ +static inline int +histogram_cell_budget(double total_rows, int ndims, int attstattarget) +{ + double budget; + double dims_cap; + double rows_cap; + double attstat; + double dims; + + if (ndims <= 0) + return 0; + + if (attstattarget <= 0) + attstattarget = 1; + + /* Requested resolution coming from PostgreSQL's ANALYZE knob. */ + attstat = (double)attstattarget; + dims = (double)ndims; + budget = pow(attstat, dims); + + /* Hard ceiling that keeps the statistics collector responsive. */ + dims_cap = (double)ndims * 100000.0; + if (budget > dims_cap) + budget = dims_cap; + + /* Small relations do not need a histogram that dwarfs the sample. */ + if (total_rows <= 0.0) + return 0; + + rows_cap = 10.0 * (double)ndims * total_rows; + if (rows_cap < 0.0) + rows_cap = 0.0; + + /* Keep intermediate computations in double precision before clamping. */ + if (rows_cap > (double)INT_MAX) + rows_cap = (double)INT_MAX; + + if (budget > rows_cap) + budget = rows_cap; + + if (budget >= (double)INT_MAX) + return INT_MAX; + if (budget <= 0.0) + return 0; + + return (int)budget; +} + +/* + * Compute the portion of 'target' covered by 'cover'. The caller supplies the + * dimensionality because ND_BOX always carries four slots. Degenerate volumes + * fold to zero, allowing the callers to detect slabs that ANALYZE sometimes + * emits for skewed datasets. + */ +static inline double +nd_box_ratio(const ND_BOX *cover, const ND_BOX *target, int ndims) +{ + int d; + bool fully_covered = true; + double ivol = 1.0; + double refvol = 1.0; + + for (d = 0; d < ndims; d++) + { + if (cover->max[d] <= target->min[d] || cover->min[d] >= target->max[d]) + return 0.0; /* Disjoint */ + + if (cover->min[d] > target->min[d] || cover->max[d] < target->max[d]) + fully_covered = false; + } + + if (fully_covered) + return 1.0; + + for (d = 0; d < ndims; d++) + { + double width = target->max[d] - target->min[d]; + double imin = Max(cover->min[d], target->min[d]); + double imax = Min(cover->max[d], target->max[d]); + double iwidth = Max(0.0, imax - imin); + + refvol *= width; + ivol *= iwidth; + } + + if (refvol == 0.0) + return refvol; + + return ivol / refvol; +} + +#endif /* POSTGIS_GSERIALIZED_ESTIMATE_SUPPORT_H */ ----------------------------------------------------------------------- Summary of changes: NEWS | 3 +- configure.ac | 1 + postgis/cunit/Makefile.in | 43 ++++++ postgis/cunit/cu_tester.c | 173 ++++++++++++++++++++++++ postgis/gserialized_estimate.c | 192 +++----------------------- postgis/gserialized_estimate_support.h | 237 +++++++++++++++++++++++++++++++++ 6 files changed, 474 insertions(+), 175 deletions(-) create mode 100644 postgis/cunit/Makefile.in create mode 100644 postgis/cunit/cu_tester.c create mode 100644 postgis/gserialized_estimate_support.h hooks/post-receive -- PostGIS From trac at osgeo.org Fri Nov 7 10:47:41 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:47:41 -0000 Subject: [PostGIS] #5959: Query planner vastly underestimates number of rows matched by GIST index In-Reply-To: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> References: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> Message-ID: <064.d2eee37640cff0715821166508d4f34a@osgeo.org> #5959: Query planner vastly underestimates number of rows matched by GIST index ----------------------+--------------------------- Reporter: alexobs | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"6b8bae5486f12dc53634f1d7982186c6413d0ef5/git" 6b8bae5/git]: {{{#!CommitTicketReference repository="git" revision="6b8bae5486f12dc53634f1d7982186c6413d0ef5" Prevent histogram target overflow when analysing massive tables Add CUnit tests for overflow scenarios Closes #5959 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 10:47:42 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:47:42 -0000 Subject: [PostGIS] #5959: Query planner vastly underestimates number of rows matched by GIST index In-Reply-To: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> References: <049.94b8cd0de5de54d9df9629186637db25@osgeo.org> Message-ID: <064.660538655b3babee6d9e3fcf85e50934@osgeo.org> #5959: Query planner vastly underestimates number of rows matched by GIST index ----------------------+--------------------------- Reporter: alexobs | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"06fbe94ffe37c1e9d26328b7554c2050feaae1b6/git" 06fbe94/git]: {{{#!CommitTicketReference repository="git" revision="06fbe94ffe37c1e9d26328b7554c2050feaae1b6" Guard against histogram axis dimension underflow References #5959 References #5984 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 10:47:42 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 18:47:42 -0000 Subject: [PostGIS] #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate In-Reply-To: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> References: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> Message-ID: <061.8c874fa5f26f469abf7be1dd187c7b8b@osgeo.org> #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate -----------------------+--------------------------- Reporter: robe | Owner: komzpa Type: defect | Status: closed Priority: critical | Milestone: PostGIS 3.4.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: -----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"06fbe94ffe37c1e9d26328b7554c2050feaae1b6/git" 06fbe94/git]: {{{#!CommitTicketReference repository="git" revision="06fbe94ffe37c1e9d26328b7554c2050feaae1b6" Guard against histogram axis dimension underflow References #5959 References #5984 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 7 13:15:09 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 7 Nov 2025 13:15:09 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-176-gc7cd09187 Message-ID: <20251107211509.C81993DC@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via c7cd09187e922254625a89f75cd724fa5f3612f5 (commit) from b185e01e95149f17cbfe486f3906dc6f921108e9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c7cd09187e922254625a89f75cd724fa5f3612f5 Author: Paul Ramsey Date: Fri Nov 7 13:14:52 2025 -0800 Ignore generated makefile diff --git a/.gitignore b/.gitignore index f9d05e3ca..9b374cdea 100644 --- a/.gitignore +++ b/.gitignore @@ -144,6 +144,7 @@ postgis/uninstall_legacy.sql postgis/uninstall_postgis.sql postgis/vector_tile.pb-c.c postgis/vector_tile.pb-c.h +postgis/cunit/Makefile raster/loader/Makefile raster/loader/raster2pgsql raster/Makefile ----------------------------------------------------------------------- Summary of changes: .gitignore | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From git at osgeo.org Fri Nov 7 13:30:35 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 7 Nov 2025 13:30:35 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-178-g8e7b03874 Message-ID: <20251107213035.5F71916A8@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 8e7b0387401764518cf28b072bb114b19514fa58 (commit) via ac07b86e9d8a2161a1a01544389d33c76051d8be (commit) from c7cd09187e922254625a89f75cd724fa5f3612f5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8e7b0387401764518cf28b072bb114b19514fa58 Merge: c7cd09187 ac07b86e9 Author: Paul Ramsey Date: Fri Nov 7 13:30:24 2025 -0800 Merge branch 'master-6012' commit ac07b86e9d8a2161a1a01544389d33c76051d8be Author: Paul Ramsey Date: Fri Nov 7 13:23:05 2025 -0800 fix memory leak, references #6012 diff --git a/liblwgeom/lwcircstring.c b/liblwgeom/lwcircstring.c index 71a1556bf..ec0d05b27 100644 --- a/liblwgeom/lwcircstring.c +++ b/liblwgeom/lwcircstring.c @@ -34,14 +34,13 @@ void printLWCIRCSTRING(LWCIRCSTRING *curve); void lwcircstring_release(LWCIRCSTRING *lwcirc); char lwcircstring_same(const LWCIRCSTRING *me, const LWCIRCSTRING *you); -LWCIRCSTRING *lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, LWPOINT **points); +LWCIRCSTRING *lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, const LWPOINT **points); LWCIRCSTRING *lwcircstring_from_lwmpoint(int32_t srid, LWMPOINT *mpoint); LWCIRCSTRING *lwcircstring_addpoint(LWCIRCSTRING *curve, LWPOINT *point, uint32_t where); LWCIRCSTRING *lwcircstring_removepoint(LWCIRCSTRING *curve, uint32_t index); void lwcircstring_setPoint4d(LWCIRCSTRING *curve, uint32_t index, POINT4D *newpoint); - /* * Construct a new LWCIRCSTRING. points will *NOT* be copied * use SRID=SRID_UNKNOWN for unknown SRID (will have 8bit type's S = 0) @@ -138,49 +137,44 @@ lwcircstring_same(const LWCIRCSTRING *me, const LWCIRCSTRING *you) * LWCIRCSTRING dimensions are large enough to host all input dimensions. */ LWCIRCSTRING * -lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, LWPOINT **points) +lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, const LWPOINT **points) { - int zmflag=0; uint32_t i; POINTARRAY *pa; - uint8_t *newpoints, *ptr; - size_t ptsize, size; + int has_z = 0, has_m = 0; + POINT4D pt; /* * Find output dimensions, check integrity */ for (i = 0; i < npoints; i++) { - if (points[i]->type != POINTTYPE) + const LWGEOM *lwg = (LWGEOM*)points[i]; + if (lwg->type != POINTTYPE) { - lwerror("lwcurve_from_lwpointarray: invalid input type: %s", - lwtype_name(points[i]->type)); + lwerror("%s: invalid input type: %s", __func__, lwtype_name(lwg->type)); return NULL; } - if (FLAGS_GET_Z(points[i]->flags)) zmflag |= 2; - if (FLAGS_GET_M(points[i]->flags)) zmflag |= 1; - if (zmflag == 3) break; + has_z |= lwgeom_has_z(lwg); + has_m |= lwgeom_has_m(lwg); + if (has_z && has_m) break; } - if (zmflag == 0) ptsize = 2 * sizeof(double); - else if (zmflag == 3) ptsize = 4 * sizeof(double); - else ptsize = 3 * sizeof(double); - /* * Allocate output points array */ - size = ptsize * npoints; - newpoints = lwalloc(size); - memset(newpoints, 0, size); + pa = ptarray_construct(has_z, has_m, npoints); - ptr = newpoints; for (i = 0; i < npoints; i++) { - size = ptarray_point_size(points[i]->point); - memcpy(ptr, getPoint_internal(points[i]->point, 0), size); - ptr += ptsize; + const LWPOINT *lwpt = points[i]; + if (!getPoint4d_p(lwpt->point, 0, &pt)) + { + lwerror("%s: failed getPoint4d_p", __func__); + return NULL; + } + ptarray_set_point4d(pa, i, &pt); } - pa = ptarray_construct_reference_data(zmflag&2, zmflag&1, npoints, newpoints); return lwcircstring_construct(srid, NULL, pa); } ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwcircstring.c | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Fri Nov 7 13:30:48 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 21:30:48 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.00406b034bcd4f9a8a57ff7596831518@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"ac07b86e9d8a2161a1a01544389d33c76051d8be/git" ac07b86e/git]: {{{#!CommitTicketReference repository="git" revision="ac07b86e9d8a2161a1a01544389d33c76051d8be" fix memory leak, references #6012 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 7 13:33:19 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 7 Nov 2025 13:33:19 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.0-29-g9b1071fcd Message-ID: <20251107213320.1E424253D@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 9b1071fcdb51c53af15942a6bd31cb51e57d602b (commit) via b85bce7cbeb15595e9e4f59cb7098f58c0274706 (commit) from 21517f662368c90bbee0dfdebff3cb82059467fd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9b1071fcdb51c53af15942a6bd31cb51e57d602b Author: Paul Ramsey Date: Fri Nov 7 13:33:10 2025 -0800 News entry for #6012 diff --git a/NEWS b/NEWS index 7a06e124f..7e316b9ee 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,7 @@ PostGIS 3.6.1 authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + - #6012, Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) PostGIS 3.6.0 commit b85bce7cbeb15595e9e4f59cb7098f58c0274706 Author: Paul Ramsey Date: Fri Nov 7 13:23:05 2025 -0800 fix memory leak, references #6012 diff --git a/liblwgeom/lwcircstring.c b/liblwgeom/lwcircstring.c index 71a1556bf..ec0d05b27 100644 --- a/liblwgeom/lwcircstring.c +++ b/liblwgeom/lwcircstring.c @@ -34,14 +34,13 @@ void printLWCIRCSTRING(LWCIRCSTRING *curve); void lwcircstring_release(LWCIRCSTRING *lwcirc); char lwcircstring_same(const LWCIRCSTRING *me, const LWCIRCSTRING *you); -LWCIRCSTRING *lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, LWPOINT **points); +LWCIRCSTRING *lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, const LWPOINT **points); LWCIRCSTRING *lwcircstring_from_lwmpoint(int32_t srid, LWMPOINT *mpoint); LWCIRCSTRING *lwcircstring_addpoint(LWCIRCSTRING *curve, LWPOINT *point, uint32_t where); LWCIRCSTRING *lwcircstring_removepoint(LWCIRCSTRING *curve, uint32_t index); void lwcircstring_setPoint4d(LWCIRCSTRING *curve, uint32_t index, POINT4D *newpoint); - /* * Construct a new LWCIRCSTRING. points will *NOT* be copied * use SRID=SRID_UNKNOWN for unknown SRID (will have 8bit type's S = 0) @@ -138,49 +137,44 @@ lwcircstring_same(const LWCIRCSTRING *me, const LWCIRCSTRING *you) * LWCIRCSTRING dimensions are large enough to host all input dimensions. */ LWCIRCSTRING * -lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, LWPOINT **points) +lwcircstring_from_lwpointarray(int32_t srid, uint32_t npoints, const LWPOINT **points) { - int zmflag=0; uint32_t i; POINTARRAY *pa; - uint8_t *newpoints, *ptr; - size_t ptsize, size; + int has_z = 0, has_m = 0; + POINT4D pt; /* * Find output dimensions, check integrity */ for (i = 0; i < npoints; i++) { - if (points[i]->type != POINTTYPE) + const LWGEOM *lwg = (LWGEOM*)points[i]; + if (lwg->type != POINTTYPE) { - lwerror("lwcurve_from_lwpointarray: invalid input type: %s", - lwtype_name(points[i]->type)); + lwerror("%s: invalid input type: %s", __func__, lwtype_name(lwg->type)); return NULL; } - if (FLAGS_GET_Z(points[i]->flags)) zmflag |= 2; - if (FLAGS_GET_M(points[i]->flags)) zmflag |= 1; - if (zmflag == 3) break; + has_z |= lwgeom_has_z(lwg); + has_m |= lwgeom_has_m(lwg); + if (has_z && has_m) break; } - if (zmflag == 0) ptsize = 2 * sizeof(double); - else if (zmflag == 3) ptsize = 4 * sizeof(double); - else ptsize = 3 * sizeof(double); - /* * Allocate output points array */ - size = ptsize * npoints; - newpoints = lwalloc(size); - memset(newpoints, 0, size); + pa = ptarray_construct(has_z, has_m, npoints); - ptr = newpoints; for (i = 0; i < npoints; i++) { - size = ptarray_point_size(points[i]->point); - memcpy(ptr, getPoint_internal(points[i]->point, 0), size); - ptr += ptsize; + const LWPOINT *lwpt = points[i]; + if (!getPoint4d_p(lwpt->point, 0, &pt)) + { + lwerror("%s: failed getPoint4d_p", __func__); + return NULL; + } + ptarray_set_point4d(pa, i, &pt); } - pa = ptarray_construct_reference_data(zmflag&2, zmflag&1, npoints, newpoints); return lwcircstring_construct(srid, NULL, pa); } ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + liblwgeom/lwcircstring.c | 42 ++++++++++++++++++------------------------ 2 files changed, 19 insertions(+), 24 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Fri Nov 7 13:33:21 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 21:33:21 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.14f88141fce01bb514944e81dc5c6da6@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"b85bce7cbeb15595e9e4f59cb7098f58c0274706/git" b85bce7/git]: {{{#!CommitTicketReference repository="git" revision="b85bce7cbeb15595e9e4f59cb7098f58c0274706" fix memory leak, references #6012 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Nov 7 13:33:46 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 07 Nov 2025 21:33:46 -0000 Subject: [PostGIS] #6012: Memory leak in function lwcircstring_from_lwpointarray In-Reply-To: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> References: <050.c313b633ffae4edc5682f59a3f451b19@osgeo.org> Message-ID: <065.8ca3679a312792b29c13502396527fb1@osgeo.org> #6012: Memory leak in function lwcircstring_from_lwpointarray -----------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: -----------------------+--------------------------- Changes (by pramsey): * resolution: => fixed * status: new => closed -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 8 00:03:46 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 8 Nov 2025 00:03:46 -0800 (PST) Subject: [SCM] PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots. branch master updated. fd680d0534a8f33863c577f6e6a8f1d90084bbd4 Message-ID: <20251108080346.8A00642D6@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots.". The branch, master has been updated via fd680d0534a8f33863c577f6e6a8f1d90084bbd4 (commit) from 79e81aca3cf11cbb77ef13ce371392e57a6830ae (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fd680d0534a8f33863c577f6e6a8f1d90084bbd4 Author: Regina Obe Date: Sat Nov 8 03:03:36 2025 -0500 build script for pgsphere diff --git a/windows/mingw64/scripts/build_pgsphere.sh b/windows/mingw64/scripts/build_pgsphere.sh new file mode 100644 index 0000000..7ebaed8 --- /dev/null +++ b/windows/mingw64/scripts/build_pgsphere.sh @@ -0,0 +1,89 @@ +#export OS_BUILD=64 +#export GCC_TYPE= +#export PG_VER=18 +export PROJECTS=/projects +export PGPATH=${PROJECTS}/postgresql/rel/pg${PG_VER}w${OS_BUILD}${GCC_TYPE} +export PGPATHEDB=${PGPATH}edb +export PATH="/mingw/bin:/bin:/c/Windows/system32" +export PATH="${PGPATH}/bin:${PGPATH}/lib:${PATH}" +#export PGPORT=5455 +export PGUSER=postgres +export SOURCES=/sources +export HEALPIX_VER=3.82.1 +export REL_HEALPIX=/projects/pgsphere/rel_healpix_${HEALPIX_VER}w${OS_BUILD}${GCC_TYPE} + +export CFITSIO_VER=4.6.3 +export REL_CFITSIO=/projects/pgsphere/rel_cfitsio_${CFITSIO_VER}w${OS_BUILD}${GCC_TYPE} +cd /projects +cd pgsphere/pgsphere + + +# build cfitsio +if false; then + wget -N https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio-${CFITSIO_VER}.tar.gz + export PATH="${PGPATH}/bin:${PGPATH}/lib:${PATH}" + rm -rf cfitsio-${CFITSIO_VER} + tar xvf cfitsio-${CFITSIO_VER}.tar.gz + cd cfitsio-${CFITSIO_VER} + mkdir build + #./configure --prefix=${REL_CFITSIO} + cmake -Bbuild -G"Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=REL_CFITSIO + #cmake --build . + cmake --install . + exit +fi +# build healpix +if false; then + export PATH="${PGPATH}/bin:${PGPATH}/lib:${REL_CFITSIO}/bin:${PATH}" + wget -N https://sourceforge.net/projects/healpix/files/Healpix_3.82/healpix_cxx-${HEALPIX_VER}.tar.gz/download -O healpix_cxx-${HEALPIX_VER}.tar.gz + tar xvf healpix_cxx-${HEALPIX_VER}.tar.gz + cd healpix_cxx-${HEALPIX_VER} + ./configure --prefix=${REL_HEALPIX} + exit +fi +#export PGSPHERE_VER=master +#export PGSPHERE_VER=1.5.1 + +#git clean -fdx +#git reset --hard +#git checkout ${PGSPHERE_VER} +#git pull +#clear +export USE_PGXS=1 +#git checkout 1.4.0 +#git checkout ${PGSPHERE_VER} +git pull +git clean -fdx +make clean +#export USE_PGXS=1 +make USE_HEALPIX=0 +rm ${PGPATH}/lib/pg_sphere.dll +make USE_HEALPIX=0 install +cp pg_sphere.dll ${PGPATHEDB}/lib/ + +make installcheck USE_HEALPIX=0 + +export RELDIR=${PROJECTS}/pgsphere/binaries/ +export RELVERDIR=pgsphere-pg${PG_VER}-binaries-${PGSPHERE_VER}w${OS_BUILD}${GCC_TYPE} +outdir="${RELDIR}/${RELVERDIR}" +package="${outdir}.zip" +verfile="${outdir}/pg_sphere_version.txt" +rm -rf $outdir +rm -f $package +strip *.dll +mkdir -p ${outdir} +mkdir -p ${outdir}/lib +mkdir -p ${outdir}/share/extension +echo "PGSPHERE VERSION: ${PGSPHERE_VER} https://github.com/postgrespro/pgsphere.git $(git rev-parse HEAD)" >> $verfile +echo "USE_HEALPIX=0" >> $verfile +cp COPYRIGHT.pg_sphere ${outdir} +cp *.dll ${outdir}/lib/ +cp *.control ${outdir}/share/extension/ +cp *.sql ${outdir}/share/extension/ +cd ${RELDIR} +cp README ${outdir} +zip -r $package ${RELVERDIR} +md5sum ${RELVERDIR}.zip > ${package}.md5 + +cp $package ${PROJECTS}/postgis/win_web/download/windows/pg${PG_VER}/buildbot/extras +cp ${package}.md5 ${PROJECTS}/postgis/win_web/download/windows/pg${PG_VER}/buildbot/extras \ No newline at end of file ----------------------------------------------------------------------- Summary of changes: windows/mingw64/scripts/build_pgsphere.sh | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 windows/mingw64/scripts/build_pgsphere.sh hooks/post-receive -- PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots. From git at osgeo.org Sat Nov 8 00:43:53 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 8 Nov 2025 00:43:53 -0800 (PST) Subject: [SCM] PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots. branch master updated. c960912a7a628aafacec039863d0b0377d6edd05 Message-ID: <20251108084353.6A54D488A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots.". The branch, master has been updated via c960912a7a628aafacec039863d0b0377d6edd05 (commit) from fd680d0534a8f33863c577f6e6a8f1d90084bbd4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c960912a7a628aafacec039863d0b0377d6edd05 Author: Regina Obe Date: Sat Nov 8 03:43:48 2025 -0500 Fix install in edb diff --git a/windows/mingw64/scripts/build_pgsphere.sh b/windows/mingw64/scripts/build_pgsphere.sh index 7ebaed8..77a3381 100644 --- a/windows/mingw64/scripts/build_pgsphere.sh +++ b/windows/mingw64/scripts/build_pgsphere.sh @@ -60,6 +60,8 @@ make USE_HEALPIX=0 rm ${PGPATH}/lib/pg_sphere.dll make USE_HEALPIX=0 install cp pg_sphere.dll ${PGPATHEDB}/lib/ +cp pg_sphere*.sql ${PGPATHEDB}/share/extension/ +cp pg_sphere.control ${PGPATHEDB}/share/extension/ make installcheck USE_HEALPIX=0 ----------------------------------------------------------------------- Summary of changes: windows/mingw64/scripts/build_pgsphere.sh | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- PostGIS Buildbots; Jenkins jobs and instructions for setting up winnie and debbie bots. From trac at osgeo.org Sat Nov 8 11:23:15 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 08 Nov 2025 19:23:15 -0000 Subject: [PostGIS] #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate In-Reply-To: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> References: <046.75677ad63d74709c6ed20baed0392698@osgeo.org> Message-ID: <061.172299ea1ef587215bb18be97d92c73c@osgeo.org> #5984: PostGIS selectivity is screwing up queries and forcing it to choose a spatial index when it's inappropriate -----------------------+--------------------------- Reporter: robe | Owner: komzpa Type: defect | Status: closed Priority: critical | Milestone: PostGIS 3.5.5 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: -----------------------+--------------------------- Changes (by robe): * milestone: PostGIS 3.4.5 => PostGIS 3.5.5 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 8 20:29:29 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 8 Nov 2025 20:29:29 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-6-g909de291b Message-ID: <20251109042929.43BE31364F4@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.5 has been updated via 909de291b75f5e96079468be73ffae5d72bc2ea3 (commit) from 06fbe94ffe37c1e9d26328b7554c2050feaae1b6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 909de291b75f5e96079468be73ffae5d72bc2ea3 Author: Regina Obe Date: Sat Nov 8 23:29:18 2025 -0500 Correct max version of PostgreSQL should be 18 not 17 diff --git a/doc/postgis.xml b/doc/postgis.xml index 185df166d..7f273df14 100644 --- a/doc/postgis.xml +++ b/doc/postgis.xml @@ -16,7 +16,7 @@ - + ----------------------------------------------------------------------- Summary of changes: doc/postgis.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Sun Nov 9 00:10:12 2025 From: git at osgeo.org (git at osgeo.org) Date: Sun, 9 Nov 2025 00:10:12 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-179-gb3a3698ff Message-ID: <20251109081013.27CC4137264@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via b3a3698ff06f87ea2ecf21c09a7bca79e01946dc (commit) from 8e7b0387401764518cf28b072bb114b19514fa58 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b3a3698ff06f87ea2ecf21c09a7bca79e01946dc Author: Regina Obe Date: Sun Nov 9 03:09:52 2025 -0500 Add upgrade support for PG18 diff --git a/utils/check_all_upgrades.sh b/utils/check_all_upgrades.sh index ffe206dd1..5fac212ea 100755 --- a/utils/check_all_upgrades.sh +++ b/utils/check_all_upgrades.sh @@ -115,6 +115,7 @@ minimum_postgis_version_for_postgresql_major_version() 15:3.2 16:3.3 17:3.3 +18:3.5 EOF fi ----------------------------------------------------------------------- Summary of changes: utils/check_all_upgrades.sh | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sun Nov 9 13:14:53 2025 From: trac at osgeo.org (PostGIS) Date: Sun, 09 Nov 2025 21:14:53 -0000 Subject: [PostGIS] #5796: Build without pgxs In-Reply-To: <046.c4e23769ad38cdf2c3c17b7064b87b78@osgeo.org> References: <046.c4e23769ad38cdf2c3c17b7064b87b78@osgeo.org> Message-ID: <061.a267765ce516ea30374e180ada6af827@osgeo.org> #5796: Build without pgxs ---------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: build | Version: master Resolution: | Keywords: ---------------------+--------------------------- Changes (by strk): * priority: blocker => medium Comment: I've downgraded to medium, although I feel this would be "low" instead. Regina if you think priority is higher please say why. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 13:16:02 2025 From: trac at osgeo.org (PostGIS) Date: Sun, 09 Nov 2025 21:16:02 -0000 Subject: [PostGIS] #5820: woodie failing on pg 15 check In-Reply-To: <046.3af8d06a439014cf49ddf53bf328cb56@osgeo.org> References: <046.3af8d06a439014cf49ddf53bf328cb56@osgeo.org> Message-ID: <061.fd445f45f4f87a9ce63ebcc1d264824d@osgeo.org> #5820: woodie failing on pg 15 check ---------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: QA/buildbots | Version: master Resolution: | Keywords: ---------------------------+--------------------------- Changes (by strk): * priority: blocker => medium Comment: downgrading, doesn't seem to block anyone -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 13:18:07 2025 From: trac at osgeo.org (PostGIS) Date: Sun, 09 Nov 2025 21:18:07 -0000 Subject: [PostGIS] #5948: MakeTopologyPrecise can turn edges into EMPTY In-Reply-To: <046.ff13cd901ab704460e3ce4da8b8b63f8@osgeo.org> References: <046.ff13cd901ab704460e3ce4da8b8b63f8@osgeo.org> Message-ID: <061.a8f31ce2d55f4b76b32d3092b205756c@osgeo.org> #5948: MakeTopologyPrecise can turn edges into EMPTY -----------------------+--------------------------- Reporter: strk | Owner: strk Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: master Resolution: | Keywords: -----------------------+--------------------------- Changes (by strk): * milestone: PostGIS 3.7.0 => PostGIS 3.6.1 Comment: I'd rather fix this for 3.6.1 as the function is new in that release. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 17:22:25 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 01:22:25 -0000 Subject: [PostGIS] #5160: standard_address and parse_address stuff USA when country is provided In-Reply-To: <046.617919fe5759714a9a5fc34d4ee5b3e9@osgeo.org> References: <046.617919fe5759714a9a5fc34d4ee5b3e9@osgeo.org> Message-ID: <061.d43bdaeca07b37c5de66ec83ffb780e0@osgeo.org> #5160: standard_address and parse_address stuff USA when country is provided ----------------------------------+----------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS Fund Me Component: pagc_address_parser | Version: 3.2.x Resolution: | Keywords: ----------------------------------+----------------------------- Changes (by robe): * milestone: PostGIS 3.5.5 => PostGIS Fund Me -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 17:25:20 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 01:25:20 -0000 Subject: [PostGIS] #5975: Enable MobilityDB to call some PostGIS functions In-Reply-To: <050.98458873e5d5f9d80926d4393cd14396@osgeo.org> References: <050.98458873e5d5f9d80926d4393cd14396@osgeo.org> Message-ID: <065.0f9f5985f1cf5e6ec2594780208ebda8@osgeo.org> #5975: Enable MobilityDB to call some PostGIS functions --------------------------+--------------------------- Reporter: ezimanyi | Owner: pramsey Type: enhancement | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: 3.5.x Resolution: | Keywords: --------------------------+--------------------------- Changes (by robe): * milestone: PostGIS 3.6.1 => PostGIS 3.7.0 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 17:26:15 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 01:26:15 -0000 Subject: [PostGIS] #6003: unknown conversion warning in lwgeom under mingw64/msys2 gcc 13.2 In-Reply-To: <046.af1e8163b07c9a3c6d2c1916c460f2e6@osgeo.org> References: <046.af1e8163b07c9a3c6d2c1916c460f2e6@osgeo.org> Message-ID: <061.82df63e3d34b7790c2edca16d43da3d6@osgeo.org> #6003: unknown conversion warning in lwgeom under mingw64/msys2 gcc 13.2 ----------------------+--------------------------- Reporter: robe | Owner: pramsey Type: defect | Status: new Priority: low | Milestone: PostGIS 3.7.0 Component: postgis | Version: 3.5.x Resolution: | Keywords: windows ----------------------+--------------------------- Changes (by robe): * milestone: PostGIS 3.6.1 => PostGIS 3.7.0 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:07:00 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:07:00 -0000 Subject: [PostGIS] #6010: ST_SetBandNoDataValue can't handle infinite no data (was: ST_Polygon(rast) returns the box of the tile instead of multipolygons of only valued pixels.) In-Reply-To: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> References: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> Message-ID: <068.27029764d1c8c34f773e7316ca139e2e@osgeo.org> #6010: ST_SetBandNoDataValue can't handle infinite no data -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: defect | Status: new Priority: low | Milestone: PostGIS 3.6.1 Component: raster | Version: 3.6.x Resolution: | Keywords: ST_Polygon (raster) ; Raster; | PostGIS_Raster; -------------------------+------------------------------------------------- Changes (by robe): * priority: medium => low * summary: ST_Polygon(rast) returns the box of the tile instead of multipolygons of only valued pixels. => ST_SetBandNoDataValue can't handle infinite no data Comment: I think the issue you have is not so much that ST_Polygon doesn't work but that your raster doesn't have the value you are trying to set. When I run: {{{ SELECT (gv).val , ST_Area((gv).geom) AS nodata, ST_Area(rast::Geometry) FROM stpolygon_error, ST_DumpAsPolygons(rast) AS gv WHERE gv.val > 0; }}} I get one record and the val returns as infinity. {{{ val | nodata | st_area ----------+---------+--------- Infinity | 1836288 | 2022400 (1 row) }}} I didn't think we allowed infinities in there but clearly I guess the value of your nodata is such a large number that it's considered infinite. Sadly doing: {{{ SELECT ST_Polygon( ST_SetBandNoDataValue(rast, 'Infinity') ) FROM stpolygon_error; }}} Still does not output just the non-infinite part. But If I convert all your > 0 values to 100 and the others to -1. And mark 100 as no-data, it returns what I'd expect (see attached image) {{{ SELECT ST_Polygon( ST_Reclass(rast,1, 'Infinity:100,[-10000-0):1', '64BF', 100) ) FROM stpolygon_error; }}} So I'm marking this as a low and changing the subject heading as the issue is not with ST_Polygon but that we can't handle all large numbers particularly with the ST_SetBandNoDataValue function [[Image(infinite_no_data.png)]] -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:07:28 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:07:28 -0000 Subject: [PostGIS] #6010: ST_SetBandNoDataValue can't handle infinite no data In-Reply-To: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> References: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> Message-ID: <068.c0510eef8c19f564c9c1d1e348f91fd5@osgeo.org> #6010: ST_SetBandNoDataValue can't handle infinite no data -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: defect | Status: new Priority: low | Milestone: PostGIS 3.6.1 Component: raster | Version: 3.6.x Resolution: | Keywords: ST_Polygon (raster) ; Raster; | PostGIS_Raster; -------------------------+------------------------------------------------- Changes (by robe): * Attachment "infinite_no_data.png" added. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:15:18 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:15:18 -0000 Subject: [PostGIS] #5967: berrie 32-bit seems to crash often on topology addnode In-Reply-To: <046.a81459a88d4826e5d251096f33bd036e@osgeo.org> References: <046.a81459a88d4826e5d251096f33bd036e@osgeo.org> Message-ID: <061.547ee88fee23b240d2af031dbf30bcc7@osgeo.org> #5967: berrie 32-bit seems to crash often on topology addnode -----------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: topology | Version: master Resolution: | Keywords: -----------------------+--------------------------- Changes (by robe): * milestone: PostGIS 3.6.1 => PostGIS 3.7.0 Comment: It's hard to tell if this is still an issue since berrie32 has been crashing on coverage as of late so never gets to this this test. I'm going to punt this to 3.7 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:24:20 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:24:20 -0000 Subject: [PostGIS] #6008: Add a Variant of ST_Polygon(raster) with Guaranteed Valid Geometry Output In-Reply-To: <053.d544190b08d7ee8136ffc3619dd338b7@osgeo.org> References: <053.d544190b08d7ee8136ffc3619dd338b7@osgeo.org> Message-ID: <068.50c90819cc1fa479e442c0a03e2e4211@osgeo.org> #6008: Add a Variant of ST_Polygon(raster) with Guaranteed Valid Geometry Output -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: task | Status: new Priority: high | Milestone: PostGIS 3.7.0 Component: raster | Version: 3.6.x Resolution: | Keywords: PostGIS_Raster; ST_Polygon(rast); | Valid Geometry; -------------------------+------------------------------------------------- Changes (by robe): * milestone: PostGIS 3.6.1 => PostGIS 3.7.0 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:25:22 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:25:22 -0000 Subject: [PostGIS] #6008: Add a Variant of ST_Polygon(raster) with Guaranteed Valid Geometry Output In-Reply-To: <053.d544190b08d7ee8136ffc3619dd338b7@osgeo.org> References: <053.d544190b08d7ee8136ffc3619dd338b7@osgeo.org> Message-ID: <068.a5fe1993e21975999e2cfb8ad18072b7@osgeo.org> #6008: Add a Variant of ST_Polygon(raster) with Guaranteed Valid Geometry Output -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: task | Status: closed Priority: high | Milestone: PostGIS 3.7.0 Component: raster | Version: 3.6.x Resolution: wontfix | Keywords: PostGIS_Raster; ST_Polygon(rast); | Valid Geometry; -------------------------+------------------------------------------------- Changes (by robe): * resolution: => wontfix * status: new => closed -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Nov 9 18:41:39 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 02:41:39 -0000 Subject: [PostGIS] #6009: Error of ST_Polygon(raster) function in PostGIS 3.4.3 and 3.5.4 In-Reply-To: <053.5b0683b43da79bf5e5b9011a9047b449@osgeo.org> References: <053.5b0683b43da79bf5e5b9011a9047b449@osgeo.org> Message-ID: <068.100f605c6239462287bbafd99ef97ede@osgeo.org> #6009: Error of ST_Polygon(raster) function in PostGIS 3.4.3 and 3.5.4 -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: defect | Status: new Priority: high | Milestone: PostGIS 3.5.5 Component: raster | Version: 3.5.x Resolution: | Keywords: PostGIS_Raster; Raster; | ST_Polygon(Raster) -------------------------+------------------------------------------------- Comment (by robe): You said in 3.6 the issue was fixed? You mind spitting out the {{{ SELECT postgis_full_version(); }}} Of your 3.6 install. I suspect the issue might be changes in GEOS or GDAL. Cause I don't think we've touched the behavior of ST_Polygon in PostGIS raster for quite some time. Also I tested your above in PostGIS 3.4.2 that has a much newer GEOS and GDAL than yours: {{{ POSTGIS="3.4.2 c19ce56" [EXTENSION] PGSQL="160" GEOS="3.15.0dev- CAPI-1.21.0" (compiled against GEOS 3.12.1) PROJ="9.6.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db" GDAL="GDAL 3.8.4, released 2024/02/08" LIBXML="2.9.14" LIBJSON="0.18" LIBPROTOBUF="1.5.1" WAGYU="0.5.0 (Internal)" RASTER }}} and it gave no error and returned 3 rows of polygons. Although the result just looked like a square and checking the no data values, they don't seem to be in the range of the polygons as you can see from this query: {{{ SELECT s.*, ST_BandNoDataValue(raster) FROM error_sounding_2m, ST_SummaryStats(raster) AS s; }}} So I'm surprised you are getting an error at all unless I'm missing a step in your processing {{{ count | sum | mean | stddev | min | max | st_bandnodatavalue -------+---------------------+---------------------+--------------------+--------------------+---------------------+------------------------- 2073 | -12315.960650817047 | -5.9411291127916295 | 1.1713853383330117 | -9.63054806077984 | -3.606000026067098 | 1.7976931348623157e+308 2073 | -12082.059349060059 | -5.828296839874606 | 1.1384145955840472 | -9.571334838867188 | -3.5280160903930664 | 3.4028234663852886e+38 2073 | 2164263.2647475842 | 1044.0247297383426 | 491.1311932725887 | 2 | 2947 | 1.7976931348623157e+308 (3 rows) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Nov 10 01:16:21 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 09:16:21 -0000 Subject: [PostGIS] #6013: Tiger 2025 load script Message-ID: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> #6013: Tiger 2025 load script ----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: tiger geocoder | Version: 3.6.x Keywords: | ----------------------------+--------------------------- New tiger 2025 are published. Need to test and revise script accordingly. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 10 01:52:59 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 01:52:59 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-180-g434bad3b7 Message-ID: <20251110095300.7483918C222@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 434bad3b732ed38ea8c14ff7276e03a9f98975f0 (commit) from b3a3698ff06f87ea2ecf21c09a7bca79e01946dc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 434bad3b732ed38ea8c14ff7276e03a9f98975f0 Author: Regina Obe Date: Mon Nov 10 04:52:30 2025 -0500 Revise postgis_tiger_geocoder to use tiger 2025 data References #6013 for PostGIS 3.7.0 diff --git a/doc/installation.xml b/doc/installation.xml index bdbdf1611..aef30dc3b 100644 --- a/doc/installation.xml +++ b/doc/installation.xml @@ -1110,7 +1110,7 @@ sh nation_script_load.sh count ------- - 33931 + 33933 (1 row) diff --git a/extensions/postgis_tiger_geocoder/Makefile.in b/extensions/postgis_tiger_geocoder/Makefile.in index 2d8e80259..ce3db167b 100644 --- a/extensions/postgis_tiger_geocoder/Makefile.in +++ b/extensions/postgis_tiger_geocoder/Makefile.in @@ -113,7 +113,7 @@ sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql/$(EXTENSION)--$(EXTV sql/tiger_geocoder_minor.sql.in: ../../extras/tiger_geocoder/utility/set_search_path.sql \ sql_bits/upgrade_before.sql.in \ ../../extras/tiger_geocoder/geocode_settings.sql \ - ../../extras/tiger_geocoder/tiger_loader_2024.sql \ + ../../extras/tiger_geocoder/tiger_loader_2025.sql \ ../../extras/tiger_geocoder/utility/utmzone.sql \ ../../extras/tiger_geocoder/utility/cull_null.sql \ ../../extras/tiger_geocoder/utility/nullable_levenshtein.sql \ @@ -149,7 +149,7 @@ sql/tiger_geocoder.sql.in: sql_bits/norm_addy_create.sql.in \ ../../extras/tiger_geocoder/utility/set_search_path.sql \ ../../extras/tiger_geocoder/geocode_settings.sql \ ../../extras/tiger_geocoder/tables/lookup_tables_2011.sql \ - ../../extras/tiger_geocoder/tiger_loader_2024.sql \ + ../../extras/tiger_geocoder/tiger_loader_2025.sql \ ../../extras/tiger_geocoder/utility/set_search_path.sql \ ../../extras/tiger_geocoder/utility/utmzone.sql \ ../../extras/tiger_geocoder/utility/cull_null.sql \ diff --git a/extras/tiger_geocoder/tiger_loader_2025.sql b/extras/tiger_geocoder/tiger_loader_2025.sql new file mode 100644 index 000000000..04fee7926 --- /dev/null +++ b/extras/tiger_geocoder/tiger_loader_2025.sql @@ -0,0 +1,667 @@ +-- +-- PostGIS - Spatial Types for PostgreSQL +-- http://postgis.net +-- +-- Copyright (C) 2012-2024 Regina Obe and Leo Hsu +-- Paragon Corporation +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public Licence. See the COPYING file. +-- +-- Author: Regina Obe and Leo Hsu +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SELECT tiger.SetSearchPathForInstall('tiger'); +BEGIN; +CREATE OR REPLACE FUNCTION create_census_base_tables() + RETURNS text AS +$$ +DECLARE var_temp text; +BEGIN +var_temp := tiger.SetSearchPathForInstall('tiger'); +IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tract_id' AND table_name = 'tract') THEN + -- census block group/tracts parent tables not created yet or an older version -- drop old if not in use, create new structure + DROP TABLE IF EXISTS tiger.tract; + CREATE TABLE tiger.tract + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + tract_id varchar(11) PRIMARY KEY, + name varchar(7), + namelsad varchar(20), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + DROP TABLE IF EXISTS tiger.tabblock; + CREATE TABLE tiger.tabblock + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blockce varchar(4), + tabblock_id varchar(16) PRIMARY KEY, + name varchar(20), + mtfcc varchar(5), + ur varchar(1), + uace varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + DROP TABLE IF EXISTS tiger.bg; + CREATE TABLE tiger.bg + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blkgrpce varchar(1), + bg_id varchar(12) PRIMARY KEY, + namelsad varchar(13), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + COMMENT ON TABLE tiger.bg IS 'block groups'; +ELSE + -- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625. + CREATE TABLE IF NOT EXISTS tiger.tract + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + tract_id varchar(11) PRIMARY KEY, + name varchar(7), + namelsad varchar(20), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + CREATE TABLE IF NOT EXISTS tiger.tabblock + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blockce varchar(4), + tabblock_id varchar(16) PRIMARY KEY, + name varchar(20), + mtfcc varchar(5), + ur varchar(1), + uace varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + CREATE TABLE IF NOT EXISTS tiger.bg + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blkgrpce varchar(1), + bg_id varchar(12) PRIMARY KEY, + namelsad varchar(13), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); +END IF; + +IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16) THEN -- size of name and tabblock_id fields need to be increased + ALTER TABLE tiger.tabblock ALTER COLUMN name TYPE varchar(20); + ALTER TABLE tiger.tabblock ALTER COLUMN tabblock_id TYPE varchar(16); + RAISE NOTICE 'Size of tabblock_id and name are being increased'; +END IF; +RETURN 'Tables already present'; +END +$$ +language 'plpgsql'; + +CREATE OR REPLACE FUNCTION loader_macro_replace(param_input text, param_keys text[],param_values text[]) +RETURNS text AS +$$ + DECLARE var_result text = param_input; + DECLARE var_count integer = array_upper(param_keys,1); + BEGIN + FOR i IN 1..var_count LOOP + var_result := replace(var_result, '${' || param_keys[i] || '}', param_values[i]); + END LOOP; + return var_result; + END; +$$ + LANGUAGE 'plpgsql' IMMUTABLE + COST 100; + +CREATE TABLE IF NOT EXISTS tiger.tabblock20 +( + statefp character varying(2) , + countyfp character varying(3) , + tractce character varying(6) , + blockce character varying(4) , + geoid character varying(15) , + name character varying(10) , + mtfcc character varying(5) , + ur character varying(1) , + uace character varying(5) , + uatype character varying(1) , + funcstat character varying(1) , + aland double precision, + awater double precision, + intptlat character varying(11) , + intptlon character varying(12) , + the_geom geometry(MultiPolygon,4269), housing float, pop float, + CONSTRAINT pk_tabblock20 PRIMARY KEY (geoid) +); + +ALTER TABLE tiger.faces ADD IF NOT EXISTS tractce20 varchar(6); +ALTER TABLE tiger.faces ADD IF NOT EXISTS blkgrpce20 varchar(1); +ALTER TABLE tiger.faces ADD IF NOT EXISTS blockce20 varchar(4); +ALTER TABLE tiger.faces ADD IF NOT EXISTS countyfp20 varchar(3); +ALTER TABLE tiger.faces ADD IF NOT EXISTS statefp20 varchar(2); + +ALTER TABLE tiger.tabblock20 ADD IF NOT EXISTS housing float; +ALTER TABLE tiger.tabblock20 ADD IF NOT EXISTS pop float; + + +-- Helper function that generates script to drop all tables in a particular schema for a particular table +-- This is useful in case you need to reload a state +CREATE OR REPLACE FUNCTION drop_state_tables_generate_script(param_state text, param_schema text DEFAULT 'tiger_data') + RETURNS text AS +$$ +SELECT array_to_string(array_agg('DROP TABLE ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ';'),E'\n') + FROM (SELECT * FROM information_schema.tables + WHERE table_schema = $2 AND table_name like lower($1) || '~_%' ESCAPE '~' ORDER BY table_name) AS foo; +; +$$ + LANGUAGE sql VOLATILE; + +-- Helper function that generates script to drop all nation tables (county, state) in a particular schema +-- This is useful for loading 2011 because state and county tables aren't broken out into separate state files +DROP FUNCTION IF EXISTS drop_national_tables_generate_script(text); +CREATE OR REPLACE FUNCTION drop_nation_tables_generate_script(param_schema text DEFAULT 'tiger_data') + RETURNS text AS +$$ +SELECT array_to_string(array_agg('DROP TABLE ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ';'),E'\n') + FROM (SELECT * FROM information_schema.tables + WHERE table_schema = $1 AND (table_name ~ E'^[a-z]{2}\_county' or table_name ~ E'^[a-z]{2}\_state' or table_name = 'state_all' or table_name LIKE 'county_all%' or table_name LIKE 'zcta5_all%') ORDER BY table_name) AS foo; +; +$$ + LANGUAGE sql VOLATILE; + +DO +$$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text); +END +$$ LANGUAGE 'plpgsql'; + + +DELETE FROM loader_platform WHERE os IN ('sh', 'windows'); +GRANT SELECT ON TABLE loader_platform TO public; +INSERT INTO loader_platform(os, wget, pgbin, declare_sect, unzip_command, psql,path_sep,loader, environ_set_command, county_process_command) +VALUES('windows', '%WGETTOOL%', '%PGBIN%', +E'set TMPDIR=${staging_fold}\\temp\\ +set UNZIPTOOL="C:\\Program Files\\7-Zip\\7z.exe" +set WGETTOOL="C:\\wget\\wget.exe" +set PGBIN=C:\\Program Files\\PostgreSQL\\18\\bin\\ +set PGPORT=5432 +set PGHOST=localhost +set PGUSER=postgres +set PGPASSWORD=yourpasswordhere +set PGDATABASE=geocoder +set PSQL="%PGBIN%psql" +set SHP2PGSQL="%PGBIN%shp2pgsql" +cd ${staging_fold} +', E'del %TMPDIR%\\*.* /Q +%PSQL% -c "DROP SCHEMA IF EXISTS ${staging_schema} CASCADE;" +%PSQL% -c "CREATE SCHEMA ${staging_schema};" +%PSQL% -c "DO language ''plpgsql'' $$ BEGIN IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = ''${data_schema}'' ) THEN CREATE SCHEMA ${data_schema}; END IF; END $$" +for /r %%z in (*.zip) do %UNZIPTOOL% e %%z -o%TMPDIR% +cd %TMPDIR%', E'%PSQL%', E'\\', E'%SHP2PGSQL%', 'set ', +'for /r %%z in (*${table_name}*.dbf) do (${loader} -D -s 4269 -g the_geom -W "latin1" %%z tiger_staging.${state_abbrev}_${table_name} | ${psql} & ${psql} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}''));")' +); + +INSERT INTO loader_platform(os, wget, pgbin, declare_sect, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command) +VALUES('sh', 'wget', '', +E'TMPDIR="${staging_fold}/temp/" +UNZIPTOOL=unzip +WGETTOOL="/usr/bin/wget" +export PGBIN=/usr/lib/postgresql/18/bin +export PGPORT=5432 +export PGHOST=localhost +export PGUSER=postgres +export PGPASSWORD=yourpasswordhere +export PGDATABASE=geocoder +PSQL=${PGBIN}/psql +SHP2PGSQL=shp2pgsql +cd ${staging_fold} +', E'rm -f ${TMPDIR}/*.* +${PSQL} -c "DROP SCHEMA IF EXISTS ${staging_schema} CASCADE;" +${PSQL} -c "CREATE SCHEMA ${staging_schema};" +for z in *.zip; do $UNZIPTOOL -o -d $TMPDIR $z; done +cd $TMPDIR;\n', '${PSQL}', '/', '${SHP2PGSQL}', 'export ', +'for z in *${table_name}*.dbf; do +${loader} -D -s 4269 -g the_geom -W "latin1" $z ${staging_schema}.${state_abbrev}_${table_name} | ${psql} +${PSQL} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}''));" +done'); + +-- variables table +DO $$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text); +END +$$ LANGUAGE 'plpgsql'; + +TRUNCATE TABLE loader_variables; +INSERT INTO loader_variables(tiger_year, website_root , staging_fold, data_schema, staging_schema) + VALUES('2024', 'https://www2.census.gov/geo/tiger/TIGER2025', '/gisdata', 'tiger_data', 'tiger_staging'); +GRANT SELECT ON TABLE loader_variables TO public; + +DO $$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000, + lookup_name text primary key, + table_name text, single_mode boolean NOT NULL DEFAULT true, + load boolean NOT NULL DEFAULT true, + level_county boolean NOT NULL DEFAULT false, + level_state boolean NOT NULL DEFAULT false, + level_nation boolean NOT NULL DEFAULT false, + post_load_process text, single_geom_mode boolean DEFAULT false, + insert_mode char(1) NOT NULL DEFAULT 'c', + pre_load_process text,columns_exclude text[], website_root_override text); +END +$$ LANGUAGE 'plpgsql'; + +TRUNCATE TABLE loader_lookuptables; + +GRANT SELECT ON TABLE loader_lookuptables TO public; + +-- put in explanatory comments of what each column is for +COMMENT ON COLUMN loader_lookuptables.lookup_name IS 'This is the table name to inherit from and suffix of resulting output table -- how the table will be named -- edges here would mean -- ma_edges , pa_edges etc. except in the case of national tables. national level tables have no prefix'; +COMMENT ON COLUMN loader_lookuptables.level_nation IS 'These are tables that contain all data for the whole US so there is just a single file'; +COMMENT ON COLUMN loader_lookuptables.table_name IS 'suffix of the tables to load e.g. edges would load all tables like *edges.dbf(shp) -- so tl_2010_42129_edges.dbf . '; +COMMENT ON COLUMN loader_lookuptables.load IS 'Whether or not to load the table. For states and zcta5 (you may just want to download states10, zcta510 nationwide file manually) load your own into a single table that inherits from tiger.states, tiger.zcta5. You''ll get improved performance for some geocoding cases.'; +COMMENT ON COLUMN loader_lookuptables.columns_exclude IS 'List of columns to exclude as an array. This is excluded from both input table and output table and rest of columns remaining are assumed to be in same order in both tables. gid, geoid,cpi,suffix1ce are excluded if no columns are specified.'; +COMMENT ON COLUMN loader_lookuptables.website_root_override IS 'Path to use for wget instead of that specified in year table. Needed currently for zcta where they release that only for 2000 and 2010'; + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(10, 'tract', 'tract', true, false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (tract_id) ) INHERITS(tiger.${lookup_name}); " ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO tract_id; SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " + ${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${state_abbrev}_${lookup_name};" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');"', ARRAY['gid', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(11, 'tabblock20', 'tabblock20', true, false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (geoid)) INHERITS(tiger.${lookup_name});" ', +'${psql} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', '{gid, geoidfq20, uatype}'::text[]); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(12, 'bg', 'bg', false,false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (bg_id)) INHERITS(tiger.${lookup_name});" ', +'${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO bg_id; SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, pre_load_process, post_load_process) +VALUES(2, 'county_all', 'county', true, false, false, true, + false, '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}(CONSTRAINT pk_${data_schema}_${lookup_name} PRIMARY KEY (cntyidfp),CONSTRAINT uidx_${data_schema}_${lookup_name}_gid UNIQUE (gid) ) INHERITS(tiger.county); " ', + '${psql} -c "ALTER TABLE ${staging_schema}.${table_name} RENAME geoid TO cntyidfp; SELECT loader_load_staged_data(lower(''${table_name}''), lower(''${lookup_name}''));" + ${psql} -c "CREATE INDEX ${data_schema}_${table_name}_the_geom_gist ON ${data_schema}.${lookup_name} USING gist(the_geom);" + ${psql} -c "CREATE UNIQUE INDEX uidx_${data_schema}_${lookup_name}_statefp_countyfp ON ${data_schema}.${lookup_name} USING btree(statefp,countyfp);" + ${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}_lookup ( CONSTRAINT pk_${lookup_name}_lookup PRIMARY KEY (st_code, co_code)) INHERITS (tiger.county_lookup);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name};" + ${psql} -c "INSERT INTO ${data_schema}.${lookup_name}_lookup(st_code, state, co_code, name) SELECT CAST(s.statefp as integer), s.abbrev, CAST(c.countyfp as integer), c.name FROM ${data_schema}.${lookup_name} As c INNER JOIN state_lookup As s ON s.statefp = c.statefp;" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name}_lookup;" '); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(1, 'state_all', 'state', true, false, false,true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}(CONSTRAINT pk_${lookup_name} PRIMARY KEY (statefp),CONSTRAINT uidx_${lookup_name}_stusps UNIQUE (stusps), CONSTRAINT uidx_${lookup_name}_gid UNIQUE (gid) ) INHERITS(tiger.state); "', + '${psql} -c "SELECT loader_load_staged_data(lower(''${table_name}''), lower(''${lookup_name}'')); " + ${psql} -c "CREATE INDEX ${data_schema}_${lookup_name}_the_geom_gist ON ${data_schema}.${lookup_name} USING gist(the_geom);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name}"' ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(3, 'place', 'place', true, false, true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (plcidfp) ) INHERITS(tiger.place);" ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO plcidfp;SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT uidx_${state_abbrev}_${lookup_name}_gid UNIQUE (gid);" +${psql} -c "CREATE INDEX idx_${state_abbrev}_${lookup_name}_soundex_name ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (soundex(name));" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');"' + ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(4, 'cousub', 'cousub', true, false, true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (cosbidfp), CONSTRAINT uidx_${state_abbrev}_${lookup_name}_gid UNIQUE (gid)) INHERITS(tiger.${lookup_name});" ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO cosbidfp;SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_countyfp ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree(countyfp);"'); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(13, 'zcta5_raw', 'zcta520', false,false, false,true, false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}( zcta5 character varying(5), classfp character varying(2),mtfcc character varying(5), funcstat character varying(1), aland double precision, awater double precision, intptlat character varying(11), intptlon character varying(12), the_geom geometry(MultiPolygon,4269) );"', +$post_load$${psql} -c "ALTER TABLE tiger.zcta5 DROP CONSTRAINT IF EXISTS enforce_geotype_the_geom; CREATE TABLE ${data_schema}.zcta5_all(CONSTRAINT pk_zcta5_all PRIMARY KEY (zcta5ce,statefp), CONSTRAINT uidx_${lookup_name}_all_gid UNIQUE (gid)) INHERITS(tiger.zcta5);" +${psql} -c "SELECT loader_load_staged_data(lower('${table_name}'), lower('${lookup_name}'));" +${psql} -c "INSERT INTO ${data_schema}.zcta5_all(statefp, zcta5ce, classfp, mtfcc, funcstat, aland, awater, intptlat, intptlon, partflg, the_geom) SELECT s.statefp, z.zcta5, z.classfp, z.mtfcc, z.funcstat, z.aland, z.awater, z.intptlat, z.intptlon, CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN 'N' ELSE 'Y' END, ST_Buffer(ST_SnapToGrid(ST_Transform(CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN ST_SimplifyPreserveTopology(ST_Transform(z.the_geom,2163),1000) ELSE ST_SimplifyPreserveTopology(ST_Intersection(ST_Transform(s.the_geom,2163), ST_Transform(z.the_geom,2163)),1000) END,4269), 0.000001),0) As geom FROM ${data_schema}.zcta5_raw AS z INNER JOIN tiger.state AS s ON (ST_Covers(s.the_geom, z.the_geom) or ST_Overlaps(s.the_geom, z.the_geom) );" + ${psql} -c "DROP TABLE ${data_schema}.zcta5_raw; CREATE INDEX idx_${data_schema}_zcta5_all_the_geom_gist ON ${data_schema}.zcta5_all USING gist(the_geom);"$post_load$ +, ARRAY['gid','geoid','geoid10', 'geoid20', 'geoidfq20', 'partflg']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(6, 'faces', 'faces', true, true, false,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (gid)) INHERITS(tiger.${lookup_name});" ', + '${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${table_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tfid ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (tfid);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_countyfp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (countyfp);" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid', 'geoid','geoidfq', 'cpi','suffix1ce', 'statefp00', 'statefp10', 'countyfp00','countyfp10' + ,'tractce00','tractce10', 'blkgrpce00', 'blkgrpce10', 'blockce00', 'blockce10' + , 'cousubfp00', 'submcdfp00', 'conctyfp00', 'placefp00', 'aiannhfp00', 'aiannhce00', + 'comptyp00', 'trsubfp00', 'trsubce00', 'anrcfp00', 'elsdlea00', 'scsdlea00', + 'unsdlea00', 'uace00', 'cd108fp', 'sldust00', 'sldlst00', 'vtdst00', 'zcta5ce00', + 'tazce00', 'ugace00', 'puma5ce00','vtdst10','tazce10','uace10','puma5ce10','tazce', 'uace', 'vtdst', 'zcta5ce10', 'puma5ce', 'ugace10','pumace10', 'estatefp', 'ugace', 'blockce', 'pumace20', 'sdadmlea', 'uace20', 'cnectafp', 'nctadvfp','nectafp']); +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(7, 'featnames', 'featnames', true, true, false,false, 'a', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${table_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', +'${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_snd_name ON ${data_schema}.${state_abbrev}_${table_name} USING btree (soundex(name));" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_lname ON ${data_schema}.${state_abbrev}_${table_name} USING btree (lower(name));" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tlid_statefp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid,statefp);" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','statefp', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(8, 'edges', 'edges', true, true, false,false, 'a', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});"', +'${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${table_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tlid ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}tfidr ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tfidr);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tfidl ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tfidl);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_countyfp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (countyfp);" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${table_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${table_name} USING gist(the_geom);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_zipl ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (zipl);" +${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_state_loc(CONSTRAINT pk_${state_abbrev}_zip_state_loc PRIMARY KEY(zip,stusps,place)) INHERITS(tiger.zip_state_loc);" +${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_state_loc(zip,stusps,statefp,place) SELECT DISTINCT e.zipl, ''${state_abbrev}'', ''${state_fips}'', p.name FROM ${data_schema}.${state_abbrev}_edges AS e INNER JOIN ${data_schema}.${state_abbrev}_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN ${data_schema}.${state_abbrev}_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_zip_state_loc_place ON ${data_schema}.${state_abbrev}_zip_state_loc USING btree(soundex(place));" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_state_loc ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_zip_state_loc;" +${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_lookup_base(CONSTRAINT pk_${state_abbrev}_zip_state_loc_city PRIMARY KEY(zip,state, county, city, statefp)) INHERITS(tiger.zip_lookup_base);" +${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_lookup_base(zip,state,county,city, statefp) SELECT DISTINCT e.zipl, ''${state_abbrev}'', c.name,p.name,''${state_fips}'' FROM ${data_schema}.${state_abbrev}_edges AS e INNER JOIN tiger.county As c ON (e.countyfp = c.countyfp AND e.statefp = c.statefp AND e.statefp = ''${state_fips}'') INNER JOIN ${data_schema}.${state_abbrev}_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN ${data_schema}.${state_abbrev}_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_lookup_base ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_zip_lookup_base_citysnd ON ${data_schema}.${state_abbrev}_zip_lookup_base USING btree(soundex(city));"', ARRAY['gid', 'geoid', 'geoidfq', 'divroad'] ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process,columns_exclude ) +VALUES(9, 'addr', 'addr', true, true, false,false, 'a', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', + '${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_least_address ON tiger_data.${state_abbrev}_addr USING btree (least_hn(fromhn,tohn) );" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_tlid_statefp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid, statefp);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_zip ON ${data_schema}.${state_abbrev}_${table_name} USING btree (zip);" + ${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_state(CONSTRAINT pk_${state_abbrev}_zip_state PRIMARY KEY(zip,stusps)) INHERITS(tiger.zip_state); " + ${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_state(zip,stusps,statefp) SELECT DISTINCT zip, ''${state_abbrev}'', ''${state_fips}'' FROM ${data_schema}.${state_abbrev}_${lookup_name} WHERE zip is not null;" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_state ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','geoidfq', 'statefp','fromarmid', 'toarmid']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process,columns_exclude ) +VALUES(9, 'addrfeat', 'addrfeat', false, true, false,true, 'a', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', + '${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','statefp','fromarmid', 'toarmid']); + +CREATE OR REPLACE FUNCTION loader_generate_nation_script(os text) + RETURNS SETOF text AS +$BODY$ +WITH lu AS (SELECT lookup_name, table_name, pre_load_process,post_load_process, process_order, insert_mode, single_geom_mode, level_nation, level_county, level_state + FROM loader_lookuptables + WHERE level_nation = true AND load = true) +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'website_root', 'psql', 'data_schema', 'staging_schema'], + ARRAY[variables.staging_fold, variables.website_root, platform.psql, variables.data_schema, variables.staging_schema] + ), '/', platform.path_sep) || ' +' || + -- Nation level files + array_to_string( ARRAY(SELECT loader_macro_replace('cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || variables.website_root || '/' + +-- hardcoding zcta5 path since doesn't follow convention +|| upper(CASE WHEN table_name = 'zcta510' THEN 'zcta5' ELSE table_name END) || '/tl_' || variables.tiger_year || '_us_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(variables.website_root, 'http[s]?://', ''),'ftp://','') || '/' +-- note have to hard-code folder path for zcta because doesn't follow convention +|| upper(CASE WHEN table_name = 'zcta510' THEN 'zcta5' ELSE table_name END) || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*' || table_name || '.zip ') || ' +' || COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year + || '_us_' || lu.table_name || '.dbf tiger_staging.' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ] + ) + FROM lu + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'website_root'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, variables.website_root]) + AS shell_code +FROM tiger.loader_variables As variables + CROSS JOIN tiger.loader_platform As platform +WHERE platform.os = $1 -- generate script for selected platform +; +$BODY$ + LANGUAGE sql VOLATILE; + +CREATE OR REPLACE FUNCTION loader_generate_script(param_states text[], os text) + RETURNS SETOF text AS +$BODY$ +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'state_fold','website_root', 'psql', 'state_abbrev', 'data_schema', 'staging_schema', 'state_fips'], + ARRAY[variables.staging_fold, s.state_fold, variables.website_root, platform.psql, s.state_abbrev, variables.data_schema, variables.staging_schema, s.state_fips::text] + ), '/', platform.path_sep) || ' +' || + -- State level files - if an override website is specified we use that instead of variable one + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || '_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override, variables.website_root || '/' || upper(lookup_name) ), 'http[s]?://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_' || variables.tiger_year || '_' || s.state_fips || '*_' || table_name || '.zip ') || ' +' ||loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year || '_' || s.state_fips + || '_' || lu.table_name || '.dbf tiger_staging.' || lower(s.state_abbrev) || '_' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ]) + FROM tiger.loader_lookuptables AS lu + WHERE level_state = true AND load = true + ORDER BY process_order, lookup_name), E'\n') ::text + -- County Level files + || E'\n' || + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || +-- explode county files create wget call for each county file +array_to_string (ARRAY(SELECT platform.wget || ' --mirror ' || COALESCE(lu.website_root_override, variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || c.countyfp || '_' || lower(table_name) || '.zip ' || E'\n' AS county_out +FROM tiger.county As c +WHERE c.statefp = s.state_fips), ' ') +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) || '/'), 'http[s]?://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*_' || s.state_fips || '*_' || table_name || '*.zip ') || ' +' || loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || COALESCE(county_process_command || E'\n','') + || COALESCE(E'\n' ||lu.post_load_process , '') , ARRAY['loader','table_name','lookup_name'], ARRAY[platform.loader || ' -D ' || CASE WHEN lu.single_geom_mode THEN ' -S' ELSE ' ' END::text, lu.table_name, lu.lookup_name ]) + FROM tiger.loader_lookuptables AS lu + WHERE level_county = true AND load = true + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'state_fold', 'website_root', 'state_abbrev','state_fips'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, s.state_fold,variables.website_root, s.state_abbrev, s.state_fips::text]) + AS shell_code +FROM loader_variables As variables + CROSS JOIN (SELECT name As state, abbrev As state_abbrev, lpad(st_code::text,2,'0') As state_fips, + lpad(st_code::text,2,'0') || '_' + || replace(name, ' ', '_') As state_fold +FROM tiger.state_lookup) As s CROSS JOIN tiger.loader_platform As platform +WHERE $1 @> ARRAY[state_abbrev::text] -- If state is contained in list of states input generate script for it +AND platform.os = $2 -- generate script for selected platform +; +$BODY$ + LANGUAGE sql VOLATILE; + +CREATE OR REPLACE FUNCTION loader_load_staged_data(param_staging_table text, param_target_table text, param_columns_exclude text[]) RETURNS integer +AS +$$ +DECLARE + var_sql text; + var_staging_schema text; var_data_schema text; + var_temp text; + var_num_records bigint; +BEGIN +-- Add all the fields except geoid and gid +-- Assume all the columns are in same order as target + SELECT staging_schema, data_schema INTO var_staging_schema, var_data_schema FROM loader_variables; + var_sql := 'INSERT INTO ' || var_data_schema || '.' || quote_ident(param_target_table) || '(' || + array_to_string(ARRAY(SELECT quote_ident(column_name::text) + FROM information_schema.columns + WHERE table_name = param_target_table + AND table_schema = var_data_schema + AND column_name <> ALL(param_columns_exclude) + ORDER BY column_name ), ',') || ') SELECT ' + || array_to_string(ARRAY(SELECT quote_ident(column_name::text) + FROM information_schema.columns + WHERE table_name = param_staging_table + AND table_schema = var_staging_schema + AND column_name <> ALL( param_columns_exclude) + ORDER BY column_name ), ',') ||' FROM ' + || var_staging_schema || '.' || param_staging_table || ';'; + RAISE NOTICE '%', var_sql; + EXECUTE (var_sql); + GET DIAGNOSTICS var_num_records = ROW_COUNT; + SELECT DropGeometryTable(var_staging_schema,param_staging_table) INTO var_temp; + RETURN var_num_records; +END; +$$ +LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION loader_load_staged_data(param_staging_table text, param_target_table text) +RETURNS integer AS +$$ +-- exclude this set list of columns if no exclusion list is specified + + SELECT tiger.loader_load_staged_data($1, $2,(SELECT COALESCE(columns_exclude,ARRAY['gid', 'geoid', 'geoidfq20', 'cpi','suffix1ce', 'statefp00', 'statefp10', 'countyfp00','countyfp10' + ,'tractce00','tractce10', 'blkgrpce00', 'blkgrpce10', 'blockce00', 'blockce10' + , 'cousubfp00', 'submcdfp00', 'conctyfp00', 'placefp00', 'aiannhfp00', 'aiannhce00' + , 'comptyp00', 'trsubfp00', 'trsubce00', 'anrcfp00', 'elsdlea00', 'scsdlea00', + 'unsdlea00', 'uace00', 'cd108fp', 'sldust00', 'sldlst00', 'vtdst00', 'zcta5ce00', + 'tazce00', 'ugace00', 'puma5ce00','vtdst10','tazce10','uace10','puma5ce10','tazce', 'uace', 'vtdst', 'zcta5ce', 'zcta5ce10', 'puma5ce', 'ugace10','pumace10', 'estatefp', 'ugace', 'blockce', 'cnectafp', 'geoidfq', 'nctadvfp', 'nectafp','pcinecta' ]) FROM loader_lookuptables WHERE $2 LIKE '%' || lookup_name)) +$$ +language 'sql' VOLATILE; + +CREATE OR REPLACE FUNCTION loader_generate_census_script(param_states text[], os text) + RETURNS SETOF text AS +$$ +SELECT create_census_base_tables(); +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'state_fold','website_root', 'psql', 'state_abbrev', 'data_schema', 'staging_schema', 'state_fips'], + ARRAY[variables.staging_fold, s.state_fold, variables.website_root, platform.psql, s.state_abbrev, variables.data_schema, variables.staging_schema, s.state_fips::text] + ), '/', platform.path_sep) || ' +' || + -- State level files - if an override website is specified we use that instead of variable one + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || '_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ), 'http[s]+://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_' || variables.tiger_year || '_' || s.state_fips || '*_' || table_name || '.zip ') || ' +' ||loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year || '_' || s.state_fips + || '_' || lu.table_name || '.dbf tiger_staging.' || lower(s.state_abbrev) || '_' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ]) + FROM loader_lookuptables AS lu + WHERE level_state = true AND lu.lookup_name IN('bg','tract', 'tabblock') + ORDER BY process_order, lookup_name), E'\n') ::text + -- County Level files + || E'\n' || + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || +-- explode county files create wget call for each county file +array_to_string (ARRAY(SELECT platform.wget || ' --mirror ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || c.countyfp || '_' || lower(table_name) || '.zip ' || E'\n' AS county_out +FROM tiger.county As c +WHERE c.statefp = s.state_fips), ' ') +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) || '/'), 'http[s]+://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*_' || s.state_fips || '*_' || table_name || '*.zip ') || ' +' || loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || COALESCE(county_process_command || E'\n','') + || COALESCE(E'\n' ||lu.post_load_process , '') , ARRAY['loader','table_name','lookup_name'], ARRAY[platform.loader || ' -D ' || CASE WHEN lu.single_geom_mode THEN ' -S' ELSE ' ' END::text, lu.table_name, lu.lookup_name ]) + FROM loader_lookuptables AS lu + WHERE level_county = true AND lu.lookup_name IN('bg','tract', 'tabblock') + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'state_fold', 'website_root', 'state_abbrev','state_fips'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, s.state_fold,variables.website_root, s.state_abbrev, s.state_fips::text]) + AS shell_code +FROM loader_variables As variables + CROSS JOIN (SELECT name As state, abbrev As state_abbrev, lpad(st_code::text,2,'0') As state_fips, + lpad(st_code::text,2,'0') || '_' + || replace(name, ' ', '_') As state_fold +FROM state_lookup) As s CROSS JOIN loader_platform As platform +WHERE $1 @> ARRAY[state_abbrev::text] -- If state is contained in list of states input generate script for it +AND platform.os = $2 -- generate script for selected platform +; +$$ + LANGUAGE sql VOLATILE; + +SELECT create_census_base_tables(); +COMMIT; ----------------------------------------------------------------------- Summary of changes: doc/installation.xml | 2 +- extensions/postgis_tiger_geocoder/Makefile.in | 4 ++-- .../{tiger_loader_2024.sql => tiger_loader_2025.sql} | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) copy extras/tiger_geocoder/{tiger_loader_2024.sql => tiger_loader_2025.sql} (98%) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Nov 10 01:53:03 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 09:53:03 -0000 Subject: [PostGIS] #6013: Tiger 2025 load script In-Reply-To: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> References: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> Message-ID: <061.3fc8a3ea1ce07a9614bba9d3e22a58b2@osgeo.org> #6013: Tiger 2025 load script -----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: tiger geocoder | Version: 3.6.x Resolution: | Keywords: -----------------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"434bad3b732ed38ea8c14ff7276e03a9f98975f0/git" 434bad3/git]: {{{#!CommitTicketReference repository="git" revision="434bad3b732ed38ea8c14ff7276e03a9f98975f0" Revise postgis_tiger_geocoder to use tiger 2025 data References #6013 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 10 02:47:50 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 02:47:50 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-181-g4341e5b51 Message-ID: <20251110104750.837E418D435@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 4341e5b5170e54f433b2212d0c272dd135e24237 (commit) from 434bad3b732ed38ea8c14ff7276e03a9f98975f0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4341e5b5170e54f433b2212d0c272dd135e24237 Author: Denys Kovshun Date: Mon Nov 10 09:08:59 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 76.2% (4466 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 029bc5b24..1a45a6561 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-10-04 15:47+0000\n" +"PO-Revision-Date: 2025-11-10 10:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -33429,6 +33429,10 @@ msgid "" "NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos defaulting to " "NearestNeighbor." msgstr "" +"???????????? ????? ? ??????? ??????? ??????????? ????????? ? ???? ?????? " +"??????? ??????????? ?????????, ?????????????? ???????? ???????? " +"?????????????????. ???????? ?????: NearestNeighbor, Bilinear, Cubic, " +"CubicSpline, Lanczos. ?? ????????????? ???????????????? NearestNeighbor." #. Tag: para #, no-c-format @@ -33438,6 +33442,10 @@ msgid "" "'NearestNeighbor' if no algorithm is specified and maxerror percent of 0.125 " "if no maxerr is specified." msgstr "" +"???????????? ????? ? ??????? ??????? ??????????? ????????? ? ???? ?????? " +"??????? ??????????? ?????????, ?????????????? ???????? ???????? ?????????? " +"????????. ???????????? ?NearestNeighbor?, ???? ???????? ?? ???????, ? " +"maxerror ? ????????? 0,125, ???? maxerr ?? ???????." #. Tag: para #, no-c-format @@ -33447,6 +33455,10 @@ msgid "" "one spatial reference system to another, while ST_SetSRID() simply changes " "the SRID identifier of the raster." msgstr "" +"ST_Transform ????? ???????? ? ST_SetSRID(). ST_Transform ???????? ?????? " +"?????????? ?????? (? ??????????? ???????? ????????) ? ?????? ??????? " +"??????????? ????????? ? ????, ???? ?? ST_SetSRID() ?????? ?????? " +"????????????? SRID ??????." #. Tag: para #, no-c-format @@ -33456,6 +33468,10 @@ msgid "" "the spatial reference system (SRID) of the reference raster and be aligned " "(ST_SameAlignment = TRUE) to the reference raster." msgstr "" +"?? ??????? ??? ????? ?????????, ??????? 3 ??????? ???????????? ???????? " +"?????? ?? alignto. ???????????? ????? ???? ???????????? ? " +"?????????? ??????? ????????? (SRID) ???????? ?????? ? ?????????? (" +"ST_SameAlignment = TRUE) ? ??????? ???????." #. Tag: para #, no-c-format @@ -33468,6 +33484,14 @@ msgid "" "and set it to libproj.dll (if you are using proj 4.6.1). " "You'll have to restart your PostgreSQL service/daemon after this change." msgstr "" +"???? ?? ???????, ?? ????????? ???????????? ?? ?????? ???????? ?????, " +"???????, ??? ?????????? ?????????? ?????? ?????????? PROJSO ?? ?????????? " +"???????? .so ??? .dll, ??? ???????????? PostGIS. ??? ????? ???????? ???? " +"??????? ??'? ?????. ?????????, ? Windows ? ?????? ????????? -> System " +"-> Environment Variables ??????? ???????? ?????? ? ?????? " +"PROJSO ? ?????????? ?? ????????? libproj.dll (???? ?? ?????????????? proj 4.6.1). ????? ???? ????? ??? " +"?????????? ????????????? ??????/????? PostgreSQL." #. Tag: para #, no-c-format @@ -33476,21 +33500,24 @@ msgid "" "reference raster to insure same alignment and no gaps in your tiles as " "demonstrated in example: Variant 3." msgstr "" +"??? ????????????? ???????? ?????? ????? ?????? ???????? ??????????????? " +"??????? ?????, ??? ??????????? ???????? ???????????? ? ??????????? ????????? " +"? ???????, ?? ???????? ? ????????: ??????? 3." #. Tag: para #, no-c-format msgid "Enhanced: 2.1.0 Addition of ST_Transform(rast, alignto) variant" -msgstr "" +msgstr "?????????: 2.1.0 ?????? ??????? ST_Transform(rast, alignto)" #. Tag: para #, no-c-format msgid "original mass state plane meters (mass_stm)" -msgstr "" +msgstr "??????????? ????? ??????? ???? (mass_stm)" #. Tag: para #, no-c-format msgid "After transform to wgs 84 long lat (wgs_84)" -msgstr "" +msgstr "????? ???????????? ? wgs 84 long lat (wgs_84)" #. Tag: para #, no-c-format @@ -33498,6 +33525,8 @@ msgid "" "After transform to wgs 84 long lat with bilinear algorithm instead of NN " "default (wgs_84_bilin)" msgstr "" +"????? ???????????? ? wgs 84 long lat ?? ????????? ??????????? ????????? " +"??????? ???????????? NN (wgs_84_bilin)" #. Tag: para #, no-c-format @@ -33505,26 +33534,28 @@ msgid "" "The following shows the difference between using ST_Transform(raster, srid) " "and ST_Transform(raster, alignto)" msgstr "" +"????? ???????? ??????? ??? ????????????? ST_Transform(raster, srid) ?? " +"ST_Transform(raster, alignto)" #. Tag: para #, no-c-format msgid "not_aligned" -msgstr "" +msgstr "not_aligned" #. Tag: para #, no-c-format msgid "aligned" -msgstr "" +msgstr "aligned" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: title #, no-c-format msgid "Raster Band Editors" -msgstr "" +msgstr "????????? ????????? ???????" #. Tag: refpurpose #, no-c-format @@ -33533,6 +33564,9 @@ msgid "" "if no band is specified. To mark a band as having no nodata value, set the " "nodata value = NULL." msgstr "" +"?????????? ???????? ??? ???????? ??????, ??? ?? ??????????? ?????. ???? " +"????? ?? ???????, ??????????, ?? ?? ????? 1. ??? ????????? ????? ?? ?????, " +"?? ?? ??? ???????? nodata, ?????????? ???????? nodata = NULL." #. Tag: para #, no-c-format @@ -33542,11 +33576,15 @@ msgid "" ">, , and the ST_PixelAs...() " "functions." msgstr "" +"?????????? ????????, ??? ?? ??????????? ????? ??? ??????. ???? ?? ???????, " +"????????????? ????? 1. ?? ?????? ?? ?????????? ??????? , ?? " +"ST_PixelAs...()." #. Tag: refpurpose #, no-c-format msgid "Sets the isnodata flag of the band to TRUE." -msgstr "" +msgstr "?????????? ?????? isnodata ?????? ?? TRUE." #. Tag: para #, no-c-format @@ -33556,6 +33594,11 @@ msgid "" "dirty. That is, when the result calling is different using TRUE as last argument and without using it" msgstr "" +"?????????? ?????? isnodata ??? ?????? ?? true. ???? ?? ???????, " +"????????????? ????? 1. ?? ??????? ???? ????????? ?????? ????, ???? ?????? " +"?????????? ???????. ?????, ???? ????????? ??????? ????????????? ??? ???????????? TRUE ?? ?????????? " +"????????? ? ??? ???? ????????????" #. Tag: para #, no-c-format @@ -33564,17 +33607,21 @@ msgid "" "linkend=\"RT_ST_SetBandNoDataValue\"/>, " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format msgid "Update the external path and band number of an out-db band" -msgstr "" +msgstr "??????? ??? ?? ????? ??????????? ?????? out-db" #. Tag: para #, no-c-format msgid "" "Updates an out-db band's external raster file path and external band number." msgstr "" +"??????? ???? ?? ??????????? ?????????? ????? ?? ????? ??????????? ?????? out-" +"db." #. Tag: para #, no-c-format @@ -33584,16 +33631,20 @@ msgid "" "file and the PostGIS raster. This mode is intended for file system changes " "where the external raster resides." msgstr "" +"???? force ??????????? ?? true, ?? ??????????? ????? " +"????? ??? ???????????? ?????????? (?????????, ????????????, ????????? " +"????????) ??? ????????? ????????? ?????? ?? ??????? PostGIS. ??? ????? " +"??????????? ??? ???? ???????? ???????, ? ???? ??????????? ????????? ?????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Update the external band number of an out-db band" -msgstr "" +msgstr "??????? ????? ??????????? ?????? out-db" #. Tag: para #, no-c-format @@ -33601,6 +33652,8 @@ msgid "" "Updates an out-db band's external band number. This does not touch the " "external raster file associated with the out-db band" msgstr "" +"??????? ????????? ????? ?????? out-db. ?? ?? ??????? ?? ????????? ????????? " +"????, ???'?????? ? ??????? out-db" #. Tag: para #, no-c-format @@ -33610,6 +33663,10 @@ msgid "" "file and the PostGIS raster. This mode is intended for where bands are moved " "around in the external raster file." msgstr "" +"???? force ??????????? ?? true, ????? ?? ?????????? (" +"?????????, ????????????, ????????? ????????) ??? ????????? ????????? ?????? " +"? ??????? PostGIS ?? ???????????. ??? ????? ??????????? ??? ????????, ???? " +"?????? ????????????? ? ??????????? ?????????? ?????." #. Tag: para #, no-c-format @@ -33618,16 +33675,18 @@ msgid "" "band with a new band instead of updating the existing " "path information." msgstr "" +"?????????? ??? ????? ??????? ????? ?????? PostGIS ?? ???????? band ????? ??????? ??????? ????????? ???????? ?????????? ??? ????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: title #, no-c-format msgid "Raster Band Statistics and Analytics" -msgstr "" +msgstr "?????????? ?? ????????? ????????? ???????" #. Tag: refpurpose #, no-c-format @@ -33636,6 +33695,10 @@ msgid "" "If no band is specified defaults to band 1. If exclude_nodata_value is set " "to true, will only count pixels that are not equal to the nodata value." msgstr "" +"???????? ????????? ???????? ? ???????? ?????? ?????????? ?????????? ??? " +"?????????? ????????. ???? ????? ?? ???????, ?? ????????????? " +"???????????????? ????? 1. ???? exclude_nodata_value ??????????? ?? true, " +"????????????????? ???? ???????, ??? ?? ?????????? ???????? nodata." #. Tag: para #, no-c-format @@ -33643,6 +33706,9 @@ msgid "" "Returns the number of pixels in a given band of a raster or raster coverage. " "If no band is specified nband defaults to 1." msgstr "" +"???????? ????????? ???????? ? ???????? ?????? ?????????? ?????????? ??? " +"?????????? ????????. ???? ????? ?? ???????, nband ?? " +"????????????? ???????? 1." #. Tag: para #, no-c-format @@ -33652,6 +33718,10 @@ msgid "" "raster. Set exclude_nodata_value to false to get count " "all pixels" msgstr "" +"???? exclude_nodata_value ??????????? ?? true, ?????? " +"??????????????? ?????? ???????, ???????? ???? ?? ???????? ???????? " +"nodata ??????. ?????????? exclude_nodata_value ?? false, ??? ??????????? ??? ???????" #. Tag: para #, no-c-format @@ -33659,6 +33729,8 @@ msgid "" "Changed: 3.1.0 - The ST_Count(rastertable, rastercolumn, ...) variants " "removed. Use instead." msgstr "" +"???????: 3.1.0 - ???????? ???????? ST_Count(rastertable, rastercolumn, ...). " +"??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -33666,6 +33738,8 @@ msgid "" ", , " msgstr "" +", , " #. Tag: refpurpose #, no-c-format @@ -33674,6 +33748,10 @@ msgid "" "If no band is specified defaults to band 1. If exclude_nodata_value is set " "to true, will only count pixels that are not equal to the NODATA value." msgstr "" +"???????. ???????? ????????? ???????? ? ???????? ?????? ?????? ???????. ???? " +"????? ?? ???????, ?? ????????????? ???????????????? ????? 1. ???? " +"exclude_nodata_value ??????????? ?? true, ????????????????? ???? ???????, " +"??? ?? ?????????? ???????? NODATA." #. Tag: para #, no-c-format @@ -33681,6 +33759,8 @@ msgid "" "Returns the number of pixels in a given band of a set of rasters. If no band " "is specified nband defaults to 1." msgstr "" +"???????? ????????? ???????? ? ???????? ?????? ?????? ???????. ???? ????? ?? " +"???????, nband ?? ????????????? ???????? 1." #. Tag: para #, no-c-format @@ -33690,6 +33770,10 @@ msgid "" "raster. Set exclude_nodata_value to false to get count " "all pixels" msgstr "" +"???? exclude_nodata_value ??????????? ?? true, ?????? " +"??????????????? ?????? ???????, ???????? ???? ?? ???????? ???????? " +"NODATA ??????. ?????????? exclude_nodata_value ?? false, ??? ??????????? ??? ???????" #. Tag: para #, no-c-format @@ -33697,6 +33781,9 @@ msgid "" "By default will sample all pixels. To get faster response, set " "sample_percent to value between zero (0) and one (1)" msgstr "" +"?? ????????????? ???? ?????????? ??? ???????. ??? ???????? ?????? ?????????, " +"?????????? sample_percent ?? ???????? ??? ???? (0) ?? " +"??????? (1)" #. Tag: refpurpose #, no-c-format @@ -39344,11 +39431,13 @@ msgstr "" msgid "" "T*****T** for Line/Point, Area/Point, and Area/Line situations" msgstr "" +"T*****T** ??? ???????? ??????/??????, ??????/?????? ?? " +"??????/??????" #. Tag: para #, no-c-format msgid "0******** for Line/Line situations" -msgstr "" +msgstr "0******** ??? ???????? ??????/??????" #. Tag: para #, no-c-format @@ -39356,6 +39445,8 @@ msgid "" "the result is false for Point/Point and Area/Area " "situations" msgstr "" +"??????????? ? false ??? ???????? ??????/?????? ?? " +"??????/??????" #. Tag: para #, no-c-format @@ -39365,21 +39456,28 @@ msgid "" "extends the definition to apply to Line/Point, Area/Point and Area/Line " "situations as well. This makes the relation symmetric." msgstr "" +"???????????? OpenGIS Simple Features ???????? ??? ???????? ?????? ??? " +"???????? ??????/??????, ??????/??????, ??????/?????? ?? ??????/??????. JTS / " +"GEOS ???????? ??????????, ??? ???? ??????????????? ????? ?? ???????? " +"??????/??????, ??????/?????? ?? ??????/??????. ?? ?????? ?????????? " +"???????????." #. Tag: para #, no-c-format msgid "&sfs_compliant; s2.1.13.3" -msgstr "" +msgstr "&sfs_compliant; s2.1.13.3" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.29" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.29" #. Tag: para #, no-c-format msgid "The following situations all return true." msgstr "" +"? ???? ????????? ????? ????????? ???????????? ???????? " +"true." #. Tag: para #, no-c-format @@ -39407,22 +39505,26 @@ msgid "" "Consider a situation where a user has two tables: a table of roads and a " "table of highways." msgstr "" +"?????????? ????????, ???? ?????????? ??? ??? ???????: ??????? ????? ? " +"??????? ???????????????." #. Tag: para #, no-c-format msgid "" "To determine a list of roads that cross a highway, use a query similar to:" msgstr "" +"??? ????????? ?????? ?????, ??? ??????????? ????, ?????????????? ?????, " +"???????? ??:" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Tests if two geometries have no points in common" -msgstr "" +msgstr "?????????, ?? ??? ????????? ?? ????? ???????? ?????" #. Tag: para #, no-c-format @@ -39430,6 +39532,8 @@ msgid "" "Returns true if two geometries are disjoint. Geometries " "are disjoint if they have no point in common." msgstr "" +"???????? true, ???? ??? ????????? ?? ?????????????. " +"????????? ?? ?????????????, ???? ???? ?? ????? ???????? ?????." #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 142 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 19 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 10 11:47:50 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 11:47:50 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-182-g02bd21e44 Message-ID: <20251110194750.AC4B9192871@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 02bd21e4479d98ebe5fac1b25dabe17f91406cf8 (commit) from 4341e5b5170e54f433b2212d0c272dd135e24237 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 02bd21e4479d98ebe5fac1b25dabe17f91406cf8 Author: Denys Kovshun Date: Mon Nov 10 18:06:26 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 77.2% (4524 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 1a45a6561..70c5f3b0c 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-10 10:47+0000\n" +"PO-Revision-Date: 2025-11-10 19:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -33792,6 +33792,9 @@ msgid "" "distribution separate bin ranges. Number of bins are autocomputed if not " "specified." msgstr "" +"???????? ????? ???????, ?? ???????????? ???????? ????? ?????????? ??? " +"?????????? ???????? ?? ???????? ??????????? ?????. ????????? ????? " +"???????????? ???????????, ???? ?? ??????? ????." #. Tag: para #, no-c-format @@ -33800,6 +33803,10 @@ msgid "" "raster band for each bin. If no band is specified nband " "defaults to 1." msgstr "" +"???????? ????? ???????, ?? ??????????? ? ????????????, ????????????? " +"????????, ????????? ?? ???????? ??? ???????? ?????????? ????????? ??? " +"??????? ????. ???? ???????? ?? ???????, nband ?? " +"????????????? ???????? 1." #. Tag: para #, no-c-format @@ -33808,6 +33815,10 @@ msgid "" "varname> value . Set exclude_nodata_value to false to get " "count all pixels." msgstr "" +"?? ????????????? ???????????? ?????? ???????? ????????, ??? ?? ?????????? " +"???????? nodata. ?????????? " +"exclude_nodata_value ?? false, ??? ??????????? ??? " +"???????." #. Tag: para #, no-c-format @@ -33815,6 +33826,8 @@ msgid "" "width: an array indicating the width of each category/bin. If the number of " "bins is greater than the number of widths, the widths are repeated." msgstr "" +"width: ?????, ?? ?????? ?????? ?????? ?????????/????. ???? ????????? ????? " +"????????? ????????? ?????, ?????? ????????????." #. Tag: para #, no-c-format @@ -33822,6 +33835,8 @@ msgid "" "Example: 9 bins, widths are [a, b, c] will have the output be [a, b, c, a, " "b, c, a, b, c]" msgstr "" +"???????: 9 ???????????, ?????? ???? ????????? [a, b, c], ?????? ????????? [" +"a, b, c, a, b, c, a, b, c]" #. Tag: para #, no-c-format @@ -33830,6 +33845,9 @@ msgid "" "the function if specified. If not specified then the number of breakouts is " "autocomputed." msgstr "" +"????????? ???????? ? ?? ????????? ???????, ??? ?? ????????? ??? ???????, " +"???? ???? ???????. ???? ???? ?? ???????, ????????? ???????? ???????????? " +"???????????." #. Tag: para #, no-c-format @@ -33837,11 +33855,13 @@ msgid "" "compute the histogram from the right rather than from the left (default). " "This changes the criteria for evaluating a value x from [a, b) to (a, b]" msgstr "" +"??????????? ?????????? ??????, ? ?? ????? (?? ?????????????). ?? ?????? " +"???????? ?????? ???????? x ? [a, b) ?? (a, b]" #. Tag: para #, no-c-format msgid "Changed: 3.1.0 Removed ST_Histogram(table_name, column_name) variant." -msgstr "" +msgstr "???????: 3.1.0 ???????? ??????? ST_Histogram(table_name, column_name)." #. Tag: title #, no-c-format @@ -33849,11 +33869,13 @@ msgid "" "Example: Single raster tile - compute histograms for bands 1, 2, 3 and " "autocompute bins" msgstr "" +"???????: ???????? ???????? ?????? ? ?????????? ????????? ??? ???? 1, 2, 3 ?? " +"??????????? ?????????? ?????" #. Tag: title #, no-c-format msgid "Example: Just band 2 but for 6 bins" -msgstr "" +msgstr "???????: ?????? ???????? 2, ??? ??? 6 ?????" #. Tag: para #, no-c-format @@ -33861,6 +33883,8 @@ msgid "" ", , " msgstr "" +", , " #. Tag: refpurpose #, no-c-format @@ -33869,6 +33893,10 @@ msgid "" "context of the sample or population. Thus, a value could be examined to be " "at the raster's 25%, 50%, 75% percentile." msgstr "" +"?????????? ???????? ??? ???????? ?????????? ?????????? ??? " +"????????? ??????? ? ????????? ??????? ??? ??????????. ????? ?????, ???????? " +"???? ???? ?????????? ?? ????????????? 25%, 50% ?? 75% ?????????? ?????????? " +"??????????." #. Tag: para #, no-c-format @@ -39290,6 +39318,8 @@ msgid "" "ST_CoveredBy is the converse of . So, " "ST_CoveredBy(A,B) = ST_Covers(B,A)." msgstr "" +"ST_CoveredBy ? ????????? ?? . ????, " +"ST_CoveredBy(A,B) = ST_Covers(B,A)." #. Tag: para #, no-c-format @@ -39298,6 +39328,9 @@ msgid "" "linkend=\"ST_Within\"/>, since it has a simpler definition which does not " "have the quirk that \"boundaries are not within their geometry\"." msgstr "" +"?? ???????, ?? ??????? ???? ??????????????? ??????? , ???????? ???? ??? ???????? ??????????, ??? ?? ??????? ???????????, ?? ?" +"???? ?? ??????????? ????????? ?? ??????????." #. Tag: para #, no-c-format @@ -39305,11 +39338,13 @@ msgid "" "&index_aware; To avoid index use, use the function _ST_CoveredBy." msgstr "" +"&index_aware; ??? ???????? ???????????? ???????, ?????????????? ??????? " +"_ST_CoveredBy." #. Tag: para #, no-c-format msgid "Not an OGC standard, but Oracle has it too." -msgstr "" +msgstr "?? ?? ???????? OGC, ??? Oracle ??? ???? ???." #. Tag: para #, no-c-format @@ -39317,11 +39352,13 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format msgid "Tests if every point of B lies in A" -msgstr "" +msgstr "?????????, ?? ????? ????? B ?????? ? A" #. Tag: para #, no-c-format @@ -39330,12 +39367,17 @@ msgid "" "inside (i.e. intersects the interior or boundary of) Geometry/Geography A. " "Equivalently, tests that no point of B lies outside (in the exterior of) A." msgstr "" +"???????? true, ???? ????? ????? ? ?????????/????????? B " +"?????? ????????? (????? ????????? ????????? ??????? ??? ????) ?????????/" +"????????? A. ????????????, ?????????, ?? ????? ????? B ?? ?????? ???? (?????)" +" A." #. Tag: para #, no-c-format msgid "" "In mathematical terms: ST_Covers(A, B) ? A ? B = B " msgstr "" +"? ???????????? ????????: ST_Covers(A, B) ? A ? B = B " #. Tag: para #, no-c-format @@ -39343,6 +39385,8 @@ msgid "" "ST_Covers is the converse of . So, " "ST_Covers(A,B) = ST_CoveredBy(B,A)." msgstr "" +"ST_Covers ? ????????? ?? . ????, " +"ST_Covers(A,B) = ST_CoveredBy(B,A)." #. Tag: para #, no-c-format @@ -39351,6 +39395,9 @@ msgid "" "linkend=\"ST_Contains\"/>, since it has a simpler definition which does not " "have the quirk that \"geometries do not contain their boundary\"." msgstr "" +"?? ???????, ?? ??????? ???? ??????????????? ??????? , ???????? ???? ??? ???????? ??????????, ??? ?? ??????? " +"???????????, ?? ?????????? ?? ??????? ????? ????." #. Tag: para #, no-c-format @@ -39358,6 +39405,8 @@ msgid "" "&index_aware; To avoid index use, use the function _ST_Covers." msgstr "" +"&index_aware; ??? ???????? ???????????? ???????, ?????????????? ??????? " +"_ST_Covers." #. Tag: para #, no-c-format @@ -39365,6 +39414,8 @@ msgid "" "Enhanced: 2.4.0 Support for polygon in polygon and line in polygon added for " "geography type" msgstr "" +"?????????: 2.4.0 ?????? ????????? ???????? ? ???????? ?? ????? ? ???????? " +"??? ???? ?????????" #. Tag: para #, no-c-format @@ -39373,27 +39424,31 @@ msgid "" "support MultiPoints with few points. Prior versions only supported point in " "polygon." msgstr "" +"?????????: 2.3.0 ?????????? ????????? ????????? PIP ??? ?????????, ????????? " +"??? ????????? MultiPoints ? ????????? ????????? ?????. ????????? ?????? " +"???????????? ?????? ????? ? ??????????????." #. Tag: para #, no-c-format msgid "Geometry example" -msgstr "" +msgstr "??????? ?????????" #. Tag: para #, no-c-format msgid "Geeography Example" -msgstr "" +msgstr "??????? ?????????" #. Tag: para #, no-c-format msgid ", , " -msgstr "" +msgstr ", , " #. Tag: refpurpose #, no-c-format msgid "" "Tests if two geometries have some, but not all, interior points in common" msgstr "" +"?????????, ?? ??? ????????? ????? ?????, ??? ?? ??? ????????? ????? ???????" #. Tag: para #, no-c-format @@ -39406,6 +39461,13 @@ msgid "" "geometries must not equal either geometry. Otherwise, it returns " "false. The crosses relation is symmetric and irreflexive." msgstr "" +"???????? ??? ??????????? ??'???? ? ???????? true, ???? ?? " +"??????? ??????????? ??????????????, ????? ????????? ????? ?????, ??? ?? ??? " +"????????? ????? ???????. ??????? ?????????? ?????? ????????? ??????? ???? ?? " +"???????? ? ???? ???????????, ????? ?? ??????????? ??????????? ???? ??????? " +"?????????, ? ??????? ???? ????????? ?? ??????? ??????????? ?????? ? " +"?????????. ? ?????? ??????? ???????????? false. " +"?????????? ???????? ? ??????????? ? ??????????????." #. Tag: para #, no-c-format @@ -39414,17 +39476,22 @@ msgid "" "< max( dim( Int(A) ), dim( Int(B) ) )) ? (A ? B ? A) ? (A ? B ? B) " msgstr "" +"? ???????????? ????????: ST_Crosses(A, B) ? (dim( Int(A) ? Int(B) )" +" <max( dim( Int(A) ), dim( Int(B) ) )) ? (A ? B ? A) ? (A ? B ? B) " +"" #. Tag: para #, no-c-format msgid "Geometries cross if their DE-9IM Intersection Matrix matches:" -msgstr "" +msgstr "????????? ?????????????, ???? ?? ??????? ???????? DE-9IM ??????????:" #. Tag: para #, no-c-format msgid "" "T*T****** for Point/Line, Point/Area, and Line/Area situations" msgstr "" +"T*T****** ??? ???????? ??????/??????, ??????/?????? ?? " +"??????/??????" #. Tag: para #, no-c-format @@ -39542,12 +39609,16 @@ msgid "" "not disjoint. Disjoint implies that is " "false." msgstr "" +"???? ??? ???? ????????? ??????????? ????-??? ???? ?????????? ??????????, " +"???? ?? ? ???'????????. ???'????????? ???????, ?? ? ??????." #. Tag: para #, no-c-format msgid "" "In mathematical terms: ST_Disjoint(A, B) ? A ? B = ? " msgstr "" +"? ???????????? ????????: ST_Disjoint(A, B) ? A ? B = ? " #. Tag: para #, no-c-format @@ -39557,21 +39628,25 @@ msgid "" "alternative that uses indexes: ST_Disjoint(A,B) = NOT ST_Intersects(A," "B)" msgstr "" +"??? ?????? ??????? ?? ???????????? ???????. ?????????? ???????? ????? ??????????????? ?? ????? ????????? " +"????????????, ??? ???????????? ???????: ST_Disjoint(A,B) = NOT " +"ST_Intersects(A,B)" #. Tag: para #, no-c-format msgid "&sfs_compliant; s2.1.1.2 //s2.1.13.3 - a.Relate(b, 'FF*FF****')" -msgstr "" +msgstr "&sfs_compliant; s2.1.1.2 //s2.1.13.3 - a.Relate(b, 'FF*FF****')" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.26" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.26" #. Tag: refpurpose #, no-c-format msgid "Tests if two geometries include the same set of points" -msgstr "" +msgstr "?????????, ?? ??? ????????? ??????? ????????? ????? ?????" #. Tag: para #, no-c-format @@ -39585,11 +39660,19 @@ msgid "" "ST_OrderingEquals is a little more stringent than simply verifying order of " "points are the same)." msgstr "" +"???????? true, ???? ?????? ????????? ? ???????????? " +"????????. ?????????????? ?? ??? ????????? ???????? ?????????, ??? ?=?. " +"??????????? ???????? ???????, ?? ????????? ????? ????????? ??????, ? ???? " +"?????? ????? ???????? ????????? ???????. ?? ???????, ?? ??????? ?????? ???? " +"???? ?????? ? ??????????? ?????? ??????????. ??? ??????????, ?? ??????? " +"????? ? ???????????, ?????????????? (" +"???? ?????????, ?? ST_OrderingEquals ? ???? ?????????, ??? ?????? ????????? " +"????, ?? ??????? ????? ? ?????????)." #. Tag: para #, no-c-format msgid "In mathematical terms: ST_Equals(A, B) ? A = B " -msgstr "" +msgstr "? ???????????? ????????: ST_Equals(A, B) ? A = B " #. Tag: para #, no-c-format @@ -39597,6 +39680,8 @@ msgid "" "The following relation holds: ST_Equals(A, B) ? ST_Within(A,B) ? " "ST_Within(B,A) " msgstr "" +"??? ???????? ??????????????: ST_Equals(A, B) ? ST_Within(A,B) ? " +"ST_Within(B,A) " #. Tag: para #, no-c-format @@ -39614,6 +39699,8 @@ msgid "" "Changed: 2.2.0 Returns true even for invalid geometries if they are binary " "equal" msgstr "" +"???????: 2.2.0 ???????? true ?????? ??? ????????? ?????????, ???? ???? ? " +"????????? ???????" #. Tag: para #, no-c-format @@ -39629,6 +39716,8 @@ msgstr "" msgid "" "Tests if two geometries intersect (they have at least one point in common)" msgstr "" +"?????????, ?? ????????????? ??? ????????? (?? ????? ???? ???? ? ???? ??????? " +"?????)" #. Tag: para #, no-c-format @@ -39636,6 +39725,8 @@ msgid "" "Returns true if two geometries intersect. Geometries " "intersect if they have any point in common." msgstr "" +"???????? true, ???? ??? ????????? ?????????????. " +"????????? ?????????????, ???? ???? ????? ??????? ?????." #. Tag: para #, no-c-format @@ -39643,18 +39734,24 @@ msgid "" "For geography, a distance tolerance of 0.00001 meters is used (so points " "that are very close are considered to intersect)." msgstr "" +"??? ????????? ???????????????? ?????? ???????? 0,00001 ????? (????? ?????, " +"??? ??????????? ???? ??????? ???? ?? ?????, ?????????? ???????????)." #. Tag: para #, no-c-format msgid "" "In mathematical terms: ST_Intersects(A, B) ? A ? B ? ? " msgstr "" +"? ???????????? ????????: ST_Intersects(A, B) ? A ? B ? ? " +"" #. Tag: para #, no-c-format msgid "" "Geometries intersect if their DE-9IM Intersection Matrix matches one of:" msgstr "" +"????????? ?????????????, ???? ?? ??????? ???????? DE-9IM ?????????? ????? ? " +"?????????:" #. Tag: para #, no-c-format @@ -39663,27 +39760,31 @@ msgid "" "except , which tests that geometries do NOT " "intersect." msgstr "" +"?????????? ??????? ?????????????? ????? ?????? ??????? ??????????? ????????, " +"?? ???????? , ???? ?????????, ?? ????????? ?? " +"?????????????." #. Tag: para #, no-c-format msgid "" "Changed: 3.0.0 SFCGAL version removed and native support for 2D TINS added." msgstr "" +"???????: 3.0.0 ???????? ?????? SFCGAL ?? ?????? ????????? ????????? 2D TINS." #. Tag: para #, no-c-format msgid "Enhanced: 2.5.0 Supports GEOMETRYCOLLECTION." -msgstr "" +msgstr "?????????: 2.5.0 ????????? GEOMETRYCOLLECTION." #. Tag: para #, no-c-format msgid "Performed by the GEOS module (for geometry), geography is native" -msgstr "" +msgstr "??????????? ??????? GEOS (??? ?????????), ????????? ? ??????" #. Tag: para #, no-c-format msgid "Availability: 1.5 support for geography was introduced." -msgstr "" +msgstr "???????????: 1.5 ???? ??????????? ????????? ?????????." #. Tag: para #, no-c-format @@ -39691,6 +39792,8 @@ msgid "" "For geography, this function has a distance tolerance of about 0.00001 " "meters and uses the sphere rather than spheroid calculation." msgstr "" +"??? ????????? ?? ??????? ??? ??????? ???????? ????????? 0,00001 ????? ? " +"???????????? ?????????? ?????, ? ?? ????????." #. Tag: para #, no-c-format @@ -39698,21 +39801,23 @@ msgid "" "&sfs_compliant; s2.1.1.2 //s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not " "(ST_Disjoint(g1, g2 ))" msgstr "" +"&sfs_compliant; s2.1.1.2 //s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not " +"(ST_Disjoint(g1, g2 ))" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.27" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.27" #. Tag: para #, no-c-format msgid ", , " -msgstr "" +msgstr ", , " #. Tag: refpurpose #, no-c-format msgid "Returns a number indicating the crossing behavior of two LineStrings" -msgstr "" +msgstr "???????? ?????, ?? ?????? ?? ????????? ???????? ???? LineStrings" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 143 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 124 insertions(+), 19 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Nov 10 13:22:20 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 21:22:20 -0000 Subject: [PostGIS] #6010: ST_SetBandNoDataValue can't handle infinite no data In-Reply-To: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> References: <053.e75a882ed0a76b9cbe60661a303659f4@osgeo.org> Message-ID: <068.8ea66938402a657d4c9b6af1e9ec3190@osgeo.org> #6010: ST_SetBandNoDataValue can't handle infinite no data -------------------------+------------------------------------------------- Reporter: | Owner: robe GISuser5432 | Type: defect | Status: new Priority: low | Milestone: PostGIS 3.6.1 Component: raster | Version: 3.6.x Resolution: | Keywords: ST_Polygon (raster) ; Raster; | PostGIS_Raster; -------------------------+------------------------------------------------- Comment (by pramsey): So, without actually running this through the debugger, I'm wondering if this section where we call into GDAL is where things fall apart. {{{ if (iBandHasNodataValue) { size_t sz = 50 * sizeof (char); pszQuery = (char *) rtalloc(sz); snprintf(pszQuery, sz, "PixelValue != %f", dBandNoData ); OGRErr e = OGR_L_SetAttributeFilter(hLayer, pszQuery); if (e != OGRERR_NONE) { rtwarn("Error filtering NODATA values for band. All values will be treated as data values"); } } else { pszQuery = NULL; } }}} Because we're asking the system to use a pretty funky value, and we're also passing it out to text and then (in GDAL) back into float, so there are places where things could go awry. Also presumably inside GDAL we're evaluating `Inf==Inf` which could have its own failure modes. All this to say, it's not 100% certain this is even fixable. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 10 15:49:23 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 15:49:23 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-183-g5b11a3ade Message-ID: <20251110234923.E2C83193E9C@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 5b11a3ade7774c51cfc35f0821873cfeeadc6b5d (commit) from 02bd21e4479d98ebe5fac1b25dabe17f91406cf8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5b11a3ade7774c51cfc35f0821873cfeeadc6b5d Author: Regina Obe Date: Mon Nov 10 17:56:10 2025 -0500 Update the year for tiger data References #6013 for PostGIS 3.7.0 diff --git a/extras/tiger_geocoder/tiger_loader_2025.sql b/extras/tiger_geocoder/tiger_loader_2025.sql index 04fee7926..e3f3632bc 100644 --- a/extras/tiger_geocoder/tiger_loader_2025.sql +++ b/extras/tiger_geocoder/tiger_loader_2025.sql @@ -304,7 +304,7 @@ $$ LANGUAGE 'plpgsql'; TRUNCATE TABLE loader_variables; INSERT INTO loader_variables(tiger_year, website_root , staging_fold, data_schema, staging_schema) - VALUES('2024', 'https://www2.census.gov/geo/tiger/TIGER2025', '/gisdata', 'tiger_data', 'tiger_staging'); + VALUES('2025', 'https://www2.census.gov/geo/tiger/TIGER2025', '/gisdata', 'tiger_data', 'tiger_staging'); GRANT SELECT ON TABLE loader_variables TO public; DO $$ ----------------------------------------------------------------------- Summary of changes: extras/tiger_geocoder/tiger_loader_2025.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Nov 10 15:49:26 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 10 Nov 2025 23:49:26 -0000 Subject: [PostGIS] #6013: Tiger 2025 load script In-Reply-To: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> References: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> Message-ID: <061.4ea9f14943bee122ea775d7ee3ddb8df@osgeo.org> #6013: Tiger 2025 load script -----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: tiger geocoder | Version: 3.6.x Resolution: | Keywords: -----------------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"5b11a3ade7774c51cfc35f0821873cfeeadc6b5d/git" 5b11a3a/git]: {{{#!CommitTicketReference repository="git" revision="5b11a3ade7774c51cfc35f0821873cfeeadc6b5d" Update the year for tiger data References #6013 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 10 16:00:51 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 16:00:51 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.0-30-gabf2fb9b0 Message-ID: <20251111000051.853291948A6@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via abf2fb9b06665ae0099acd6ccaeeb0c8bbc0f1c4 (commit) from 9b1071fcdb51c53af15942a6bd31cb51e57d602b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit abf2fb9b06665ae0099acd6ccaeeb0c8bbc0f1c4 Author: Regina Obe Date: Mon Nov 10 04:52:30 2025 -0500 Revise postgis_tiger_geocoder to use tiger 2025 data Closes #6013 for PostGIS 3.6.1 diff --git a/NEWS b/NEWS index 7e316b9ee..6fbc465ee 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,7 @@ PostGIS 3.6.1 - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) - #6012, Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) + - #6013, [tiger_geocoder] Load Tiger 2025 data (Regina Obe) PostGIS 3.6.0 diff --git a/doc/installation.xml b/doc/installation.xml index e7ff09792..84cd1aef4 100644 --- a/doc/installation.xml +++ b/doc/installation.xml @@ -1092,7 +1092,7 @@ sh nation_script_load.sh count ------- - 33931 + 33933 (1 row) diff --git a/extensions/postgis_tiger_geocoder/Makefile.in b/extensions/postgis_tiger_geocoder/Makefile.in index 2d8e80259..ce3db167b 100644 --- a/extensions/postgis_tiger_geocoder/Makefile.in +++ b/extensions/postgis_tiger_geocoder/Makefile.in @@ -113,7 +113,7 @@ sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql/$(EXTENSION)--$(EXTV sql/tiger_geocoder_minor.sql.in: ../../extras/tiger_geocoder/utility/set_search_path.sql \ sql_bits/upgrade_before.sql.in \ ../../extras/tiger_geocoder/geocode_settings.sql \ - ../../extras/tiger_geocoder/tiger_loader_2024.sql \ + ../../extras/tiger_geocoder/tiger_loader_2025.sql \ ../../extras/tiger_geocoder/utility/utmzone.sql \ ../../extras/tiger_geocoder/utility/cull_null.sql \ ../../extras/tiger_geocoder/utility/nullable_levenshtein.sql \ @@ -149,7 +149,7 @@ sql/tiger_geocoder.sql.in: sql_bits/norm_addy_create.sql.in \ ../../extras/tiger_geocoder/utility/set_search_path.sql \ ../../extras/tiger_geocoder/geocode_settings.sql \ ../../extras/tiger_geocoder/tables/lookup_tables_2011.sql \ - ../../extras/tiger_geocoder/tiger_loader_2024.sql \ + ../../extras/tiger_geocoder/tiger_loader_2025.sql \ ../../extras/tiger_geocoder/utility/set_search_path.sql \ ../../extras/tiger_geocoder/utility/utmzone.sql \ ../../extras/tiger_geocoder/utility/cull_null.sql \ diff --git a/extras/tiger_geocoder/tiger_loader_2025.sql b/extras/tiger_geocoder/tiger_loader_2025.sql new file mode 100644 index 000000000..eeb4c2783 --- /dev/null +++ b/extras/tiger_geocoder/tiger_loader_2025.sql @@ -0,0 +1,667 @@ +-- +-- PostGIS - Spatial Types for PostgreSQL +-- http://postgis.net +-- +-- Copyright (C) 2012-2024 Regina Obe and Leo Hsu +-- Paragon Corporation +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public Licence. See the COPYING file. +-- +-- Author: Regina Obe and Leo Hsu +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SELECT tiger.SetSearchPathForInstall('tiger'); +BEGIN; +CREATE OR REPLACE FUNCTION create_census_base_tables() + RETURNS text AS +$$ +DECLARE var_temp text; +BEGIN +var_temp := tiger.SetSearchPathForInstall('tiger'); +IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tract_id' AND table_name = 'tract') THEN + -- census block group/tracts parent tables not created yet or an older version -- drop old if not in use, create new structure + DROP TABLE IF EXISTS tiger.tract; + CREATE TABLE tiger.tract + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + tract_id varchar(11) PRIMARY KEY, + name varchar(7), + namelsad varchar(20), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry(MULTIPOLYGON), + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + DROP TABLE IF EXISTS tiger.tabblock; + CREATE TABLE tiger.tabblock + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blockce varchar(4), + tabblock_id varchar(16) PRIMARY KEY, + name varchar(20), + mtfcc varchar(5), + ur varchar(1), + uace varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + DROP TABLE IF EXISTS tiger.bg; + CREATE TABLE tiger.bg + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blkgrpce varchar(1), + bg_id varchar(12) PRIMARY KEY, + namelsad varchar(13), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + COMMENT ON TABLE tiger.bg IS 'block groups'; +ELSE + -- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625. + CREATE TABLE IF NOT EXISTS tiger.tract + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + tract_id varchar(11) PRIMARY KEY, + name varchar(7), + namelsad varchar(20), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + CREATE TABLE IF NOT EXISTS tiger.tabblock + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blockce varchar(4), + tabblock_id varchar(16) PRIMARY KEY, + name varchar(20), + mtfcc varchar(5), + ur varchar(1), + uace varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); + + CREATE TABLE IF NOT EXISTS tiger.bg + ( + gid serial NOT NULL, + statefp varchar(2), + countyfp varchar(3), + tractce varchar(6), + blkgrpce varchar(1), + bg_id varchar(12) PRIMARY KEY, + namelsad varchar(13), + mtfcc varchar(5), + funcstat varchar(1), + aland double precision, + awater double precision, + intptlat varchar(11), + intptlon varchar(12), + the_geom geometry, + CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2), + CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL), + CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269) + ); +END IF; + +IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16) THEN -- size of name and tabblock_id fields need to be increased + ALTER TABLE tiger.tabblock ALTER COLUMN name TYPE varchar(20); + ALTER TABLE tiger.tabblock ALTER COLUMN tabblock_id TYPE varchar(16); + RAISE NOTICE 'Size of tabblock_id and name are being increased'; +END IF; +RETURN 'Tables already present'; +END +$$ +language 'plpgsql'; + +CREATE OR REPLACE FUNCTION loader_macro_replace(param_input text, param_keys text[],param_values text[]) +RETURNS text AS +$$ + DECLARE var_result text = param_input; + DECLARE var_count integer = array_upper(param_keys,1); + BEGIN + FOR i IN 1..var_count LOOP + var_result := replace(var_result, '${' || param_keys[i] || '}', param_values[i]); + END LOOP; + return var_result; + END; +$$ + LANGUAGE 'plpgsql' IMMUTABLE + COST 100; + +CREATE TABLE IF NOT EXISTS tiger.tabblock20 +( + statefp character varying(2) , + countyfp character varying(3) , + tractce character varying(6) , + blockce character varying(4) , + geoid character varying(15) , + name character varying(10) , + mtfcc character varying(5) , + ur character varying(1) , + uace character varying(5) , + uatype character varying(1) , + funcstat character varying(1) , + aland double precision, + awater double precision, + intptlat character varying(11) , + intptlon character varying(12) , + the_geom geometry(MultiPolygon,4269), housing float, pop float, + CONSTRAINT pk_tabblock20 PRIMARY KEY (geoid) +); + +ALTER TABLE tiger.faces ADD IF NOT EXISTS tractce20 varchar(6); +ALTER TABLE tiger.faces ADD IF NOT EXISTS blkgrpce20 varchar(1); +ALTER TABLE tiger.faces ADD IF NOT EXISTS blockce20 varchar(4); +ALTER TABLE tiger.faces ADD IF NOT EXISTS countyfp20 varchar(3); +ALTER TABLE tiger.faces ADD IF NOT EXISTS statefp20 varchar(2); + +ALTER TABLE tiger.tabblock20 ADD IF NOT EXISTS housing float; +ALTER TABLE tiger.tabblock20 ADD IF NOT EXISTS pop float; + + +-- Helper function that generates script to drop all tables in a particular schema for a particular table +-- This is useful in case you need to reload a state +CREATE OR REPLACE FUNCTION drop_state_tables_generate_script(param_state text, param_schema text DEFAULT 'tiger_data') + RETURNS text AS +$$ +SELECT array_to_string(array_agg('DROP TABLE ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ';'),E'\n') + FROM (SELECT * FROM information_schema.tables + WHERE table_schema = $2 AND table_name like lower($1) || '~_%' ESCAPE '~' ORDER BY table_name) AS foo; +; +$$ + LANGUAGE sql VOLATILE; + +-- Helper function that generates script to drop all nation tables (county, state) in a particular schema +-- This is useful for loading 2011 because state and county tables aren't broken out into separate state files +DROP FUNCTION IF EXISTS drop_national_tables_generate_script(text); +CREATE OR REPLACE FUNCTION drop_nation_tables_generate_script(param_schema text DEFAULT 'tiger_data') + RETURNS text AS +$$ +SELECT array_to_string(array_agg('DROP TABLE ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ';'),E'\n') + FROM (SELECT * FROM information_schema.tables + WHERE table_schema = $1 AND (table_name ~ E'^[a-z]{2}\_county' or table_name ~ E'^[a-z]{2}\_state' or table_name = 'state_all' or table_name LIKE 'county_all%' or table_name LIKE 'zcta5_all%') ORDER BY table_name) AS foo; +; +$$ + LANGUAGE sql VOLATILE; + +DO +$$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text); +END +$$ LANGUAGE 'plpgsql'; + + +DELETE FROM loader_platform WHERE os IN ('sh', 'windows'); +GRANT SELECT ON TABLE loader_platform TO public; +INSERT INTO loader_platform(os, wget, pgbin, declare_sect, unzip_command, psql,path_sep,loader, environ_set_command, county_process_command) +VALUES('windows', '%WGETTOOL%', '%PGBIN%', +E'set TMPDIR=${staging_fold}\\temp\\ +set UNZIPTOOL="C:\\Program Files\\7-Zip\\7z.exe" +set WGETTOOL="C:\\wget\\wget.exe" +set PGBIN=C:\\Program Files\\PostgreSQL\\18\\bin\\ +set PGPORT=5432 +set PGHOST=localhost +set PGUSER=postgres +set PGPASSWORD=yourpasswordhere +set PGDATABASE=geocoder +set PSQL="%PGBIN%psql" +set SHP2PGSQL="%PGBIN%shp2pgsql" +cd ${staging_fold} +', E'del %TMPDIR%\\*.* /Q +%PSQL% -c "DROP SCHEMA IF EXISTS ${staging_schema} CASCADE;" +%PSQL% -c "CREATE SCHEMA ${staging_schema};" +%PSQL% -c "DO language ''plpgsql'' $$ BEGIN IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = ''${data_schema}'' ) THEN CREATE SCHEMA ${data_schema}; END IF; END $$" +for /r %%z in (*.zip) do %UNZIPTOOL% e %%z -o%TMPDIR% +cd %TMPDIR%', E'%PSQL%', E'\\', E'%SHP2PGSQL%', 'set ', +'for /r %%z in (*${table_name}*.dbf) do (${loader} -D -s 4269 -g the_geom -W "latin1" %%z tiger_staging.${state_abbrev}_${table_name} | ${psql} & ${psql} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}''));")' +); + +INSERT INTO loader_platform(os, wget, pgbin, declare_sect, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command) +VALUES('sh', 'wget', '', +E'TMPDIR="${staging_fold}/temp/" +UNZIPTOOL=unzip +WGETTOOL="/usr/bin/wget" +export PGBIN=/usr/lib/postgresql/18/bin +export PGPORT=5432 +export PGHOST=localhost +export PGUSER=postgres +export PGPASSWORD=yourpasswordhere +export PGDATABASE=geocoder +PSQL=${PGBIN}/psql +SHP2PGSQL=shp2pgsql +cd ${staging_fold} +', E'rm -f ${TMPDIR}/*.* +${PSQL} -c "DROP SCHEMA IF EXISTS ${staging_schema} CASCADE;" +${PSQL} -c "CREATE SCHEMA ${staging_schema};" +for z in *.zip; do $UNZIPTOOL -o -d $TMPDIR $z; done +cd $TMPDIR;\n', '${PSQL}', '/', '${SHP2PGSQL}', 'export ', +'for z in *${table_name}*.dbf; do +${loader} -D -s 4269 -g the_geom -W "latin1" $z ${staging_schema}.${state_abbrev}_${table_name} | ${psql} +${PSQL} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}''));" +done'); + +-- variables table +DO $$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text); +END +$$ LANGUAGE 'plpgsql'; + +TRUNCATE TABLE loader_variables; +INSERT INTO loader_variables(tiger_year, website_root , staging_fold, data_schema, staging_schema) + VALUES('2025', 'https://www2.census.gov/geo/tiger/TIGER2025', '/gisdata', 'tiger_data', 'tiger_staging'); +GRANT SELECT ON TABLE loader_variables TO public; + +DO $$ +BEGIN + CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000, + lookup_name text primary key, + table_name text, single_mode boolean NOT NULL DEFAULT true, + load boolean NOT NULL DEFAULT true, + level_county boolean NOT NULL DEFAULT false, + level_state boolean NOT NULL DEFAULT false, + level_nation boolean NOT NULL DEFAULT false, + post_load_process text, single_geom_mode boolean DEFAULT false, + insert_mode char(1) NOT NULL DEFAULT 'c', + pre_load_process text,columns_exclude text[], website_root_override text); +END +$$ LANGUAGE 'plpgsql'; + +TRUNCATE TABLE loader_lookuptables; + +GRANT SELECT ON TABLE loader_lookuptables TO public; + +-- put in explanatory comments of what each column is for +COMMENT ON COLUMN loader_lookuptables.lookup_name IS 'This is the table name to inherit from and suffix of resulting output table -- how the table will be named -- edges here would mean -- ma_edges , pa_edges etc. except in the case of national tables. national level tables have no prefix'; +COMMENT ON COLUMN loader_lookuptables.level_nation IS 'These are tables that contain all data for the whole US so there is just a single file'; +COMMENT ON COLUMN loader_lookuptables.table_name IS 'suffix of the tables to load e.g. edges would load all tables like *edges.dbf(shp) -- so tl_2010_42129_edges.dbf . '; +COMMENT ON COLUMN loader_lookuptables.load IS 'Whether or not to load the table. For states and zcta5 (you may just want to download states10, zcta510 nationwide file manually) load your own into a single table that inherits from tiger.states, tiger.zcta5. You''ll get improved performance for some geocoding cases.'; +COMMENT ON COLUMN loader_lookuptables.columns_exclude IS 'List of columns to exclude as an array. This is excluded from both input table and output table and rest of columns remaining are assumed to be in same order in both tables. gid, geoid,cpi,suffix1ce are excluded if no columns are specified.'; +COMMENT ON COLUMN loader_lookuptables.website_root_override IS 'Path to use for wget instead of that specified in year table. Needed currently for zcta where they release that only for 2000 and 2010'; + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(10, 'tract', 'tract', true, false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (tract_id) ) INHERITS(tiger.${lookup_name}); " ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO tract_id; SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " + ${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${state_abbrev}_${lookup_name};" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');"', ARRAY['gid', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(11, 'tabblock20', 'tabblock20', true, false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (geoid)) INHERITS(tiger.${lookup_name});" ', +'${psql} -c "SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', '{gid, geoidfq20, uatype}'::text[]); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(12, 'bg', 'bg', false,false, true,false, 'c', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (bg_id)) INHERITS(tiger.${lookup_name});" ', +'${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO bg_id; SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); " +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, pre_load_process, post_load_process) +VALUES(2, 'county_all', 'county', true, false, false, true, + false, '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}(CONSTRAINT pk_${data_schema}_${lookup_name} PRIMARY KEY (cntyidfp),CONSTRAINT uidx_${data_schema}_${lookup_name}_gid UNIQUE (gid) ) INHERITS(tiger.county); " ', + '${psql} -c "ALTER TABLE ${staging_schema}.${table_name} RENAME geoid TO cntyidfp; SELECT loader_load_staged_data(lower(''${table_name}''), lower(''${lookup_name}''));" + ${psql} -c "CREATE INDEX ${data_schema}_${table_name}_the_geom_gist ON ${data_schema}.${lookup_name} USING gist(the_geom);" + ${psql} -c "CREATE UNIQUE INDEX uidx_${data_schema}_${lookup_name}_statefp_countyfp ON ${data_schema}.${lookup_name} USING btree(statefp,countyfp);" + ${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}_lookup ( CONSTRAINT pk_${lookup_name}_lookup PRIMARY KEY (st_code, co_code)) INHERITS (tiger.county_lookup);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name};" + ${psql} -c "INSERT INTO ${data_schema}.${lookup_name}_lookup(st_code, state, co_code, name) SELECT CAST(s.statefp as integer), s.abbrev, CAST(c.countyfp as integer), c.name FROM ${data_schema}.${lookup_name} As c INNER JOIN state_lookup As s ON s.statefp = c.statefp;" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name}_lookup;" '); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(1, 'state_all', 'state', true, false, false,true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}(CONSTRAINT pk_${lookup_name} PRIMARY KEY (statefp),CONSTRAINT uidx_${lookup_name}_stusps UNIQUE (stusps), CONSTRAINT uidx_${lookup_name}_gid UNIQUE (gid) ) INHERITS(tiger.state); "', + '${psql} -c "SELECT loader_load_staged_data(lower(''${table_name}''), lower(''${lookup_name}'')); " + ${psql} -c "CREATE INDEX ${data_schema}_${lookup_name}_the_geom_gist ON ${data_schema}.${lookup_name} USING gist(the_geom);" + ${psql} -c "VACUUM ANALYZE ${data_schema}.${lookup_name}"' ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(3, 'place', 'place', true, false, true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (plcidfp) ) INHERITS(tiger.place);" ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO plcidfp;SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT uidx_${state_abbrev}_${lookup_name}_gid UNIQUE (gid);" +${psql} -c "CREATE INDEX idx_${state_abbrev}_${lookup_name}_soundex_name ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (soundex(name));" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');"' + ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process ) +VALUES(4, 'cousub', 'cousub', true, false, true,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (cosbidfp), CONSTRAINT uidx_${state_abbrev}_${lookup_name}_gid UNIQUE (gid)) INHERITS(tiger.${lookup_name});" ', + '${psql} -c "ALTER TABLE ${staging_schema}.${state_abbrev}_${table_name} RENAME geoid TO cosbidfp;SELECT loader_load_staged_data(lower(''${state_abbrev}_${table_name}''), lower(''${state_abbrev}_${lookup_name}'')); ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${lookup_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_countyfp ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree(countyfp);"'); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, level_nation, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(13, 'zcta5_raw', 'zcta520', false,false, false,true, false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${lookup_name}( zcta5 character varying(5), classfp character varying(2),mtfcc character varying(5), funcstat character varying(1), aland double precision, awater double precision, intptlat character varying(11), intptlon character varying(12), the_geom geometry(MultiPolygon,4269) );"', +$post_load$${psql} -c "ALTER TABLE tiger.zcta5 DROP CONSTRAINT IF EXISTS enforce_geotype_the_geom; CREATE TABLE ${data_schema}.zcta5_all(CONSTRAINT pk_zcta5_all PRIMARY KEY (zcta5ce,statefp), CONSTRAINT uidx_${lookup_name}_all_gid UNIQUE (gid)) INHERITS(tiger.zcta5);" +${psql} -c "SELECT loader_load_staged_data(lower('${table_name}'), lower('${lookup_name}'));" +${psql} -c "INSERT INTO ${data_schema}.zcta5_all(statefp, zcta5ce, classfp, mtfcc, funcstat, aland, awater, intptlat, intptlon, partflg, the_geom) SELECT s.statefp, z.zcta5, z.classfp, z.mtfcc, z.funcstat, z.aland, z.awater, z.intptlat, z.intptlon, CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN 'N' ELSE 'Y' END, ST_Buffer(ST_SnapToGrid(ST_Transform(CASE WHEN ST_Covers(s.the_geom, z.the_geom) THEN ST_SimplifyPreserveTopology(ST_Transform(z.the_geom,2163),1000) ELSE ST_SimplifyPreserveTopology(ST_Intersection(ST_Transform(s.the_geom,2163), ST_Transform(z.the_geom,2163)),1000) END,4269), 0.000001),0) As geom FROM ${data_schema}.zcta5_raw AS z INNER JOIN tiger.state AS s ON (ST_Covers(s.the_geom, z.the_geom) or ST_Overlaps(s.the_geom, z.the_geom) );" + ${psql} -c "DROP TABLE ${data_schema}.zcta5_raw; CREATE INDEX idx_${data_schema}_zcta5_all_the_geom_gist ON ${data_schema}.zcta5_all USING gist(the_geom);"$post_load$ +, ARRAY['gid','geoid','geoid10', 'geoid20', 'geoidfq20', 'partflg']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(6, 'faces', 'faces', true, true, false,false, 'c', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${lookup_name} PRIMARY KEY (gid)) INHERITS(tiger.${lookup_name});" ', + '${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${table_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${lookup_name} USING gist(the_geom);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tfid ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (tfid);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_countyfp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (countyfp);" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid', 'geoid','geoidfq', 'cpi','suffix1ce', 'statefp00', 'statefp10', 'countyfp00','countyfp10' + ,'tractce00','tractce10', 'blkgrpce00', 'blkgrpce10', 'blockce00', 'blockce10' + , 'cousubfp00', 'submcdfp00', 'conctyfp00', 'placefp00', 'aiannhfp00', 'aiannhce00', + 'comptyp00', 'trsubfp00', 'trsubce00', 'anrcfp00', 'elsdlea00', 'scsdlea00', + 'unsdlea00', 'uace00', 'cd108fp', 'sldust00', 'sldlst00', 'vtdst00', 'zcta5ce00', + 'tazce00', 'ugace00', 'puma5ce00','vtdst10','tazce10','uace10','puma5ce10','tazce', 'uace', 'vtdst', 'zcta5ce10', 'puma5ce', 'ugace10','pumace10', 'estatefp', 'ugace', 'blockce', 'pumace20', 'sdadmlea', 'uace20', 'cnectafp', 'nctadvfp','nectafp']); +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(7, 'featnames', 'featnames', true, true, false,false, 'a', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${table_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', +'${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_snd_name ON ${data_schema}.${state_abbrev}_${table_name} USING btree (soundex(name));" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_lname ON ${data_schema}.${state_abbrev}_${table_name} USING btree (lower(name));" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tlid_statefp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid,statefp);" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','statefp', 'geoidfq']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process, columns_exclude ) +VALUES(8, 'edges', 'edges', true, true, false,false, 'a', +'${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${table_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});"', +'${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${table_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tlid ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}tfidr ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tfidr);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_tfidl ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tfidl);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_countyfp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (countyfp);" +${psql} -c "CREATE INDEX ${data_schema}_${state_abbrev}_${table_name}_the_geom_gist ON ${data_schema}.${state_abbrev}_${table_name} USING gist(the_geom);" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_zipl ON ${data_schema}.${state_abbrev}_${lookup_name} USING btree (zipl);" +${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_state_loc(CONSTRAINT pk_${state_abbrev}_zip_state_loc PRIMARY KEY(zip,stusps,place)) INHERITS(tiger.zip_state_loc);" +${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_state_loc(zip,stusps,statefp,place) SELECT DISTINCT e.zipl, ''${state_abbrev}'', ''${state_fips}'', p.name FROM ${data_schema}.${state_abbrev}_edges AS e INNER JOIN ${data_schema}.${state_abbrev}_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN ${data_schema}.${state_abbrev}_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_zip_state_loc_place ON ${data_schema}.${state_abbrev}_zip_state_loc USING btree(soundex(place));" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_state_loc ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};" +${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_zip_state_loc;" +${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_lookup_base(CONSTRAINT pk_${state_abbrev}_zip_state_loc_city PRIMARY KEY(zip,state, county, city, statefp)) INHERITS(tiger.zip_lookup_base);" +${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_lookup_base(zip,state,county,city, statefp) SELECT DISTINCT e.zipl, ''${state_abbrev}'', c.name,p.name,''${state_fips}'' FROM ${data_schema}.${state_abbrev}_edges AS e INNER JOIN tiger.county As c ON (e.countyfp = c.countyfp AND e.statefp = c.statefp AND e.statefp = ''${state_fips}'') INNER JOIN ${data_schema}.${state_abbrev}_faces AS f ON (e.tfidl = f.tfid OR e.tfidr = f.tfid) INNER JOIN ${data_schema}.${state_abbrev}_place As p ON(f.statefp = p.statefp AND f.placefp = p.placefp ) WHERE e.zipl IS NOT NULL;" +${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_lookup_base ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" +${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_zip_lookup_base_citysnd ON ${data_schema}.${state_abbrev}_zip_lookup_base USING btree(soundex(city));"', ARRAY['gid', 'geoid', 'geoidfq', 'divroad'] ); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process,columns_exclude ) +VALUES(9, 'addr', 'addr', true, true, false,false, 'a', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', + '${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${lookup_name}_least_address ON tiger_data.${state_abbrev}_addr USING btree (least_hn(fromhn,tohn) );" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_tlid_statefp ON ${data_schema}.${state_abbrev}_${table_name} USING btree (tlid, statefp);" + ${psql} -c "CREATE INDEX idx_${data_schema}_${state_abbrev}_${table_name}_zip ON ${data_schema}.${state_abbrev}_${table_name} USING btree (zip);" + ${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_zip_state(CONSTRAINT pk_${state_abbrev}_zip_state PRIMARY KEY(zip,stusps)) INHERITS(tiger.zip_state); " + ${psql} -c "INSERT INTO ${data_schema}.${state_abbrev}_zip_state(zip,stusps,statefp) SELECT DISTINCT zip, ''${state_abbrev}'', ''${state_fips}'' FROM ${data_schema}.${state_abbrev}_${lookup_name} WHERE zip is not null;" + ${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_zip_state ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','geoidfq', 'statefp','fromarmid', 'toarmid']); + +INSERT INTO loader_lookuptables(process_order, lookup_name, table_name, load, level_county, level_state, single_geom_mode, insert_mode, pre_load_process, post_load_process,columns_exclude ) +VALUES(9, 'addrfeat', 'addrfeat', false, true, false,true, 'a', + '${psql} -c "CREATE TABLE ${data_schema}.${state_abbrev}_${lookup_name}(CONSTRAINT pk_${state_abbrev}_${table_name} PRIMARY KEY (gid)) INHERITS(tiger.${table_name});ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ALTER COLUMN statefp SET DEFAULT ''${state_fips}'';" ', + '${psql} -c "ALTER TABLE ${data_schema}.${state_abbrev}_${lookup_name} ADD CONSTRAINT chk_statefp CHECK (statefp = ''${state_fips}'');" + ${psql} -c "vacuum analyze ${data_schema}.${state_abbrev}_${lookup_name};"', ARRAY['gid','statefp','fromarmid', 'toarmid']); + +CREATE OR REPLACE FUNCTION loader_generate_nation_script(os text) + RETURNS SETOF text AS +$BODY$ +WITH lu AS (SELECT lookup_name, table_name, pre_load_process,post_load_process, process_order, insert_mode, single_geom_mode, level_nation, level_county, level_state + FROM loader_lookuptables + WHERE level_nation = true AND load = true) +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'website_root', 'psql', 'data_schema', 'staging_schema'], + ARRAY[variables.staging_fold, variables.website_root, platform.psql, variables.data_schema, variables.staging_schema] + ), '/', platform.path_sep) || ' +' || + -- Nation level files + array_to_string( ARRAY(SELECT loader_macro_replace('cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || variables.website_root || '/' + +-- hardcoding zcta5 path since doesn't follow convention +|| upper(CASE WHEN table_name = 'zcta510' THEN 'zcta5' ELSE table_name END) || '/tl_' || variables.tiger_year || '_us_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(variables.website_root, 'http[s]?://', ''),'ftp://','') || '/' +-- note have to hard-code folder path for zcta because doesn't follow convention +|| upper(CASE WHEN table_name = 'zcta510' THEN 'zcta5' ELSE table_name END) || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*' || table_name || '.zip ') || ' +' || COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year + || '_us_' || lu.table_name || '.dbf tiger_staging.' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ] + ) + FROM lu + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'website_root'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, variables.website_root]) + AS shell_code +FROM tiger.loader_variables As variables + CROSS JOIN tiger.loader_platform As platform +WHERE platform.os = $1 -- generate script for selected platform +; +$BODY$ + LANGUAGE sql VOLATILE; + +CREATE OR REPLACE FUNCTION loader_generate_script(param_states text[], os text) + RETURNS SETOF text AS +$BODY$ +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'state_fold','website_root', 'psql', 'state_abbrev', 'data_schema', 'staging_schema', 'state_fips'], + ARRAY[variables.staging_fold, s.state_fold, variables.website_root, platform.psql, s.state_abbrev, variables.data_schema, variables.staging_schema, s.state_fips::text] + ), '/', platform.path_sep) || ' +' || + -- State level files - if an override website is specified we use that instead of variable one + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || '_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override, variables.website_root || '/' || upper(lookup_name) ), 'http[s]?://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_' || variables.tiger_year || '_' || s.state_fips || '*_' || table_name || '.zip ') || ' +' ||loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year || '_' || s.state_fips + || '_' || lu.table_name || '.dbf tiger_staging.' || lower(s.state_abbrev) || '_' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ]) + FROM tiger.loader_lookuptables AS lu + WHERE level_state = true AND load = true + ORDER BY process_order, lookup_name), E'\n') ::text + -- County Level files + || E'\n' || + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || +-- explode county files create wget call for each county file +array_to_string (ARRAY(SELECT platform.wget || ' --mirror ' || COALESCE(lu.website_root_override, variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || c.countyfp || '_' || lower(table_name) || '.zip ' || E'\n' AS county_out +FROM tiger.county As c +WHERE c.statefp = s.state_fips), ' ') +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) || '/'), 'http[s]?://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*_' || s.state_fips || '*_' || table_name || '*.zip ') || ' +' || loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || COALESCE(county_process_command || E'\n','') + || COALESCE(E'\n' ||lu.post_load_process , '') , ARRAY['loader','table_name','lookup_name'], ARRAY[platform.loader || ' -D ' || CASE WHEN lu.single_geom_mode THEN ' -S' ELSE ' ' END::text, lu.table_name, lu.lookup_name ]) + FROM tiger.loader_lookuptables AS lu + WHERE level_county = true AND load = true + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'state_fold', 'website_root', 'state_abbrev','state_fips'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, s.state_fold,variables.website_root, s.state_abbrev, s.state_fips::text]) + AS shell_code +FROM loader_variables As variables + CROSS JOIN (SELECT name As state, abbrev As state_abbrev, lpad(st_code::text,2,'0') As state_fips, + lpad(st_code::text,2,'0') || '_' + || replace(name, ' ', '_') As state_fold +FROM tiger.state_lookup) As s CROSS JOIN tiger.loader_platform As platform +WHERE $1 @> ARRAY[state_abbrev::text] -- If state is contained in list of states input generate script for it +AND platform.os = $2 -- generate script for selected platform +; +$BODY$ + LANGUAGE sql VOLATILE; + +CREATE OR REPLACE FUNCTION loader_load_staged_data(param_staging_table text, param_target_table text, param_columns_exclude text[]) RETURNS integer +AS +$$ +DECLARE + var_sql text; + var_staging_schema text; var_data_schema text; + var_temp text; + var_num_records bigint; +BEGIN +-- Add all the fields except geoid and gid +-- Assume all the columns are in same order as target + SELECT staging_schema, data_schema INTO var_staging_schema, var_data_schema FROM loader_variables; + var_sql := 'INSERT INTO ' || var_data_schema || '.' || quote_ident(param_target_table) || '(' || + array_to_string(ARRAY(SELECT quote_ident(column_name::text) + FROM information_schema.columns + WHERE table_name = param_target_table + AND table_schema = var_data_schema + AND column_name <> ALL(param_columns_exclude) + ORDER BY column_name ), ',') || ') SELECT ' + || array_to_string(ARRAY(SELECT quote_ident(column_name::text) + FROM information_schema.columns + WHERE table_name = param_staging_table + AND table_schema = var_staging_schema + AND column_name <> ALL( param_columns_exclude) + ORDER BY column_name ), ',') ||' FROM ' + || var_staging_schema || '.' || param_staging_table || ';'; + RAISE NOTICE '%', var_sql; + EXECUTE (var_sql); + GET DIAGNOSTICS var_num_records = ROW_COUNT; + SELECT DropGeometryTable(var_staging_schema,param_staging_table) INTO var_temp; + RETURN var_num_records; +END; +$$ +LANGUAGE 'plpgsql' VOLATILE; + +CREATE OR REPLACE FUNCTION loader_load_staged_data(param_staging_table text, param_target_table text) +RETURNS integer AS +$$ +-- exclude this set list of columns if no exclusion list is specified + + SELECT tiger.loader_load_staged_data($1, $2,(SELECT COALESCE(columns_exclude,ARRAY['gid', 'geoid', 'geoidfq20', 'cpi','suffix1ce', 'statefp00', 'statefp10', 'countyfp00','countyfp10' + ,'tractce00','tractce10', 'blkgrpce00', 'blkgrpce10', 'blockce00', 'blockce10' + , 'cousubfp00', 'submcdfp00', 'conctyfp00', 'placefp00', 'aiannhfp00', 'aiannhce00' + , 'comptyp00', 'trsubfp00', 'trsubce00', 'anrcfp00', 'elsdlea00', 'scsdlea00', + 'unsdlea00', 'uace00', 'cd108fp', 'sldust00', 'sldlst00', 'vtdst00', 'zcta5ce00', + 'tazce00', 'ugace00', 'puma5ce00','vtdst10','tazce10','uace10','puma5ce10','tazce', 'uace', 'vtdst', 'zcta5ce', 'zcta5ce10', 'puma5ce', 'ugace10','pumace10', 'estatefp', 'ugace', 'blockce', 'cnectafp', 'geoidfq', 'nctadvfp', 'nectafp','pcinecta' ]) FROM loader_lookuptables WHERE $2 LIKE '%' || lookup_name)) +$$ +language 'sql' VOLATILE; + +CREATE OR REPLACE FUNCTION loader_generate_census_script(param_states text[], os text) + RETURNS SETOF text AS +$$ +SELECT create_census_base_tables(); +SELECT + loader_macro_replace( + replace( + loader_macro_replace(declare_sect + , ARRAY['staging_fold', 'state_fold','website_root', 'psql', 'state_abbrev', 'data_schema', 'staging_schema', 'state_fips'], + ARRAY[variables.staging_fold, s.state_fold, variables.website_root, platform.psql, s.state_abbrev, variables.data_schema, variables.staging_schema, s.state_fips::text] + ), '/', platform.path_sep) || ' +' || + -- State level files - if an override website is specified we use that instead of variable one + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || platform.wget || ' ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || '_' || lower(table_name) || '.zip --mirror --reject=html +' +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ), 'http[s]+://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_' || variables.tiger_year || '_' || s.state_fips || '*_' || table_name || '.zip ') || ' +' ||loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || platform.loader || ' -D -' || lu.insert_mode || ' -s 4269 -g the_geom ' + || CASE WHEN lu.single_geom_mode THEN ' -S ' ELSE ' ' END::text || ' -W "latin1" tl_' || variables.tiger_year || '_' || s.state_fips + || '_' || lu.table_name || '.dbf tiger_staging.' || lower(s.state_abbrev) || '_' || lu.table_name || ' | '::text || platform.psql + || COALESCE(E'\n' || + lu.post_load_process , '') , ARRAY['loader','table_name', 'lookup_name'], ARRAY[platform.loader, lu.table_name, lu.lookup_name ]) + FROM loader_lookuptables AS lu + WHERE level_state = true AND lu.lookup_name IN('bg','tract', 'tabblock') + ORDER BY process_order, lookup_name), E'\n') ::text + -- County Level files + || E'\n' || + array_to_string( ARRAY(SELECT 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || ' +' || +-- explode county files create wget call for each county file +array_to_string (ARRAY(SELECT platform.wget || ' --mirror ' || COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) ) || '/tl_' || variables.tiger_year || '_' || s.state_fips || c.countyfp || '_' || lower(table_name) || '.zip ' || E'\n' AS county_out +FROM tiger.county As c +WHERE c.statefp = s.state_fips), ' ') +|| 'cd ' || replace(variables.staging_fold,'/', platform.path_sep) || '/' || replace(regexp_replace(COALESCE(lu.website_root_override,variables.website_root || '/' || upper(lookup_name) || '/'), 'http[s]+://', ''),'ftp://','') || ' +' || replace(platform.unzip_command, '*.zip', 'tl_*_' || s.state_fips || '*_' || table_name || '*.zip ') || ' +' || loader_macro_replace(COALESCE(lu.pre_load_process || E'\n', '') || COALESCE(county_process_command || E'\n','') + || COALESCE(E'\n' ||lu.post_load_process , '') , ARRAY['loader','table_name','lookup_name'], ARRAY[platform.loader || ' -D ' || CASE WHEN lu.single_geom_mode THEN ' -S' ELSE ' ' END::text, lu.table_name, lu.lookup_name ]) + FROM loader_lookuptables AS lu + WHERE level_county = true AND lu.lookup_name IN('bg','tract', 'tabblock') + ORDER BY process_order, lookup_name), E'\n') ::text + , ARRAY['psql', 'data_schema','staging_schema', 'staging_fold', 'state_fold', 'website_root', 'state_abbrev','state_fips'], + ARRAY[platform.psql, variables.data_schema, variables.staging_schema, variables.staging_fold, s.state_fold,variables.website_root, s.state_abbrev, s.state_fips::text]) + AS shell_code +FROM loader_variables As variables + CROSS JOIN (SELECT name As state, abbrev As state_abbrev, lpad(st_code::text,2,'0') As state_fips, + lpad(st_code::text,2,'0') || '_' + || replace(name, ' ', '_') As state_fold +FROM state_lookup) As s CROSS JOIN loader_platform As platform +WHERE $1 @> ARRAY[state_abbrev::text] -- If state is contained in list of states input generate script for it +AND platform.os = $2 -- generate script for selected platform +; +$$ + LANGUAGE sql VOLATILE; + +SELECT create_census_base_tables(); +COMMIT; ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + doc/installation.xml | 2 +- extensions/postgis_tiger_geocoder/Makefile.in | 4 ++-- .../{tiger_loader_2024.sql => tiger_loader_2025.sql} | 11 ++++++----- 4 files changed, 10 insertions(+), 8 deletions(-) copy extras/tiger_geocoder/{tiger_loader_2024.sql => tiger_loader_2025.sql} (98%) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Nov 10 16:00:52 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 11 Nov 2025 00:00:52 -0000 Subject: [PostGIS] #6013: Tiger 2025 load script In-Reply-To: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> References: <046.19059aa7fd7854e30bd013f6b8ed30eb@osgeo.org> Message-ID: <061.96dddf86001d7d5acbcd2f1ca06ef184@osgeo.org> #6013: Tiger 2025 load script -----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.6.1 Component: tiger geocoder | Version: 3.6.x Resolution: fixed | Keywords: -----------------------------+--------------------------- Changes (by Regina Obe ): * resolution: => fixed * status: new => closed Comment: In [changeset:"abf2fb9b06665ae0099acd6ccaeeb0c8bbc0f1c4/git" abf2fb9b/git]: {{{#!CommitTicketReference repository="git" revision="abf2fb9b06665ae0099acd6ccaeeb0c8bbc0f1c4" Revise postgis_tiger_geocoder to use tiger 2025 data Closes #6013 for PostGIS 3.6.1 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 10 17:51:16 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 17:51:16 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-184-g298894060 Message-ID: <20251111015117.43A3D194DB5@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 2988940601d16b0c56d046c623efe550e9d33432 (commit) from 5b11a3ade7774c51cfc35f0821873cfeeadc6b5d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2988940601d16b0c56d046c623efe550e9d33432 Author: Teramoto Ikuhiro Date: Tue Nov 11 00:58:07 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 100.0% (5857 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 49c822b0d..a7ada2c69 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,10 +10,10 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-08-25 08:47+0000\n" +"PO-Revision-Date: 2025-11-11 01:51+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -50123,9 +50123,9 @@ msgid "" "input vertices must fall already on the specified grid, see ." msgstr "" -"??gridSize???????? (GEOS-3.9.0??????)?????" -"??????????????????????????????????????" -"??????????????????????????????????????" +"??gridSize???????? (GEOS-3.9.0?????)??????" +"??????????????????????????????????????" +"?????????????????????????????????????" "????????" #. Tag: para @@ -50151,7 +50151,7 @@ msgstr "???????" #. Tag: para #, no-c-format msgid "Requires GEOS (3.9,3.10,3.11,3.12) or higher" -msgstr "GEOS (3.9,3.10,3.11,3.12) ??" +msgstr "GEOS (3.9,3.10,3.11,3.12) ?????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 10 18:46:42 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 18:46:42 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-185-g481f67144 Message-ID: <20251111024642.A554119600C@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 481f6714463bb1d70f9ab186d4e6871bba0fe509 (commit) from 2988940601d16b0c56d046c623efe550e9d33432 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 481f6714463bb1d70f9ab186d4e6871bba0fe509 Author: Regina Obe Date: Mon Nov 10 20:58:22 2025 -0500 Fix es translation xml errors diff --git a/doc/po/es/postgis-manual.po b/doc/po/es/postgis-manual.po index f19dd9cd1..a6c3c8f03 100644 --- a/doc/po/es/postgis-manual.po +++ b/doc/po/es/postgis-manual.po @@ -129,8 +129,8 @@ msgstr "" "clic con el bot?n derecho del rat?n en Equipo-> Propiedades Configuraci?n " "avanzada del sistema o en el explorador navegando hasta Panel de " "control\\Todos los elementos del panel de control\\Sistema. A " -"continuaci?n, haga clic en Configuraci?n avanzada del sistema -> " -"> Avanzadas ->> Variables de entorno y a?ada nuevas variables " +"continuaci?n, haga clic en Configuraci?n avanzada del sistema -> " +"> Avanzadas ->> Variables de entorno y a?ada nuevas variables " "del sistema." #. Tag: para ----------------------------------------------------------------------- Summary of changes: doc/po/es/postgis-manual.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 10 20:31:16 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 20:31:16 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-186-gf656810bc Message-ID: <20251111043116.D447E19722F@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via f656810bcfe06dd860806e7310d21b1a45f89490 (commit) from 481f6714463bb1d70f9ab186d4e6871bba0fe509 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f656810bcfe06dd860806e7310d21b1a45f89490 Author: Regina Obe Date: Mon Nov 10 23:30:54 2025 -0500 Fix winnie ci regress respect conditional diff --git a/ci/winnie/regress_postgis.sh b/ci/winnie/regress_postgis.sh index 5a86e8db9..092516642 100644 --- a/ci/winnie/regress_postgis.sh +++ b/ci/winnie/regress_postgis.sh @@ -90,7 +90,7 @@ LDFLAGS="-Wl,--enable-auto-import -L${PGPATH}/lib -L${LZ4_PATH}/lib -L${PROJECTS --with-libiconv=${PROJECTS}/rel-libiconv-${ICON_VER}w${OS_BUILD}${GCC_TYPE} \ --with-gui --with-gettext=no \ --with-sfcgal=${PROJECTS}/CGAL/rel-sfcgal-${SFCGAL_VER}w${OS_BUILD}${GCC_TYPE}/bin/sfcgal-config \ - --prefix=${PROJECTS}/postgis/liblwgeom-${POSTGIS_VER}w${OS_BUILD}${GCC_TYPE} --with-library-minor-version \ + --prefix=${PROJECTS}/postgis/liblwgeom-${POSTGIS_VER}w${OS_BUILD}${GCC_TYPE} \ ${EXTRA_CONFIGURE_ARGS} ----------------------------------------------------------------------- Summary of changes: ci/winnie/regress_postgis.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 10 20:47:49 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 20:47:49 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-187-g04760e7de Message-ID: <20251111044749.7C7A8197EDB@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 04760e7de531370840c60c1796458c562c0908ba (commit) from f656810bcfe06dd860806e7310d21b1a45f89490 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 04760e7de531370840c60c1796458c562c0908ba Author: Teramoto Ikuhiro Date: Tue Nov 11 02:53:13 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 100.0% (5857 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index a7ada2c69..71fb76b78 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-11 01:51+0000\n" +"PO-Revision-Date: 2025-11-11 04:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -50055,16 +50055,15 @@ msgstr "???????????????????????? #, no-c-format msgid "" "For geography this is a thin wrapper around the geometry implementation." -msgstr "?????????????????????????????????" +msgstr "???????????????????????????????????" #. Tag: para #, no-c-format msgid "" "This function automatically includes a bounding box comparison that makes " "use of any spatial indexes that are available on the geometries." -msgstr "" -"??????????????????????????????????????" -"???????????????????????" +msgstr "??????????????????????????????????????" +"???????????????????????????" #. Tag: para #, no-c-format @@ -50094,8 +50093,8 @@ msgid "" "" msgstr "" "???????OGC Simple Features Implementation Specification for SQL 1.1??" -"????" +"sfs\">OGC Simple Features Implementation Specification for SQL 1." +"1??????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 10 21:06:20 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 21:06:20 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-159-ge478a5f Message-ID: <20251111050620.F2FBDF16@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via e478a5fc17773ddcdc872a2e83c3c2a4d607bf48 (commit) from 8f9eb9691253c978c2fe7960737514d0d64ea8c5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e478a5fc17773ddcdc872a2e83c3c2a4d607bf48 Author: Regina Obe Date: Tue Nov 11 00:05:50 2025 -0500 Fix git primary url diff --git a/content/development/rfcs/rfc05.md b/content/development/rfcs/rfc05.md index 5110088..43cc366 100644 --- a/content/development/rfcs/rfc05.md +++ b/content/development/rfcs/rfc05.md @@ -1,9 +1,9 @@ --- title: "RFC-5: PostGIS Core Contributor Guidelines" author: Regina Obe -version: 2.0 +version: 2.1 category: rfcs -date: "2022-03-21" +date: "2025-11-11" draft: false type: rfc relatedInSidebar: false @@ -20,7 +20,7 @@ This RFC should be only changed by PostGIS PSC members. All PSC members must agr To formalize source tree access, and specify some guidelines for primary source committers and patch submitters. # Election to Core Contributors Group - Permission for write source tree access to our primary repo (?https://git.osgeo.org/gitea/postgis/postgis.git) shall be provided to contributors only if accepted by the PostGIS Project Steering Committee. A proposal should be written to the PSC for new contributors and voted on normally. It is not necessary to write an RFC document for these votes, a proposal to postgis-dev is sufficient. After approval, the approved contributor shall be given write access to the PostGIS source repo and also added to the documentation under the section ?Core Contributors Present + Permission for write source tree access to our primary repo (?https://gitea.osgeo.org/gpostgis/postgis.git) shall be provided to contributors only if accepted by the PostGIS Project Steering Committee. A proposal should be written to the PSC for new contributors and voted on normally. It is not necessary to write an RFC document for these votes, a proposal to postgis-dev is sufficient. After approval, the approved contributor shall be given write access to the PostGIS source repo and also added to the documentation under the section ?Core Contributors Present Removal of write access should be handled by the same process. ----------------------------------------------------------------------- Summary of changes: content/development/rfcs/rfc05.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- postgis.net From git at osgeo.org Mon Nov 10 21:45:14 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 10 Nov 2025 21:45:14 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-7-g6e6c2eb22 Message-ID: <20251111054514.C32431DBF@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.5 has been updated via 6e6c2eb228e0fd4fdc4a034a74281ce2499684c9 (commit) from 909de291b75f5e96079468be73ffae5d72bc2ea3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6e6c2eb228e0fd4fdc4a034a74281ce2499684c9 Author: Regina Obe Date: Tue Nov 11 00:44:58 2025 -0500 Fix winnie minor-lib regress testing diff --git a/ci/winnie/regress_postgis.sh b/ci/winnie/regress_postgis.sh index 5a86e8db9..0261a26c3 100644 --- a/ci/winnie/regress_postgis.sh +++ b/ci/winnie/regress_postgis.sh @@ -90,7 +90,7 @@ LDFLAGS="-Wl,--enable-auto-import -L${PGPATH}/lib -L${LZ4_PATH}/lib -L${PROJECTS --with-libiconv=${PROJECTS}/rel-libiconv-${ICON_VER}w${OS_BUILD}${GCC_TYPE} \ --with-gui --with-gettext=no \ --with-sfcgal=${PROJECTS}/CGAL/rel-sfcgal-${SFCGAL_VER}w${OS_BUILD}${GCC_TYPE}/bin/sfcgal-config \ - --prefix=${PROJECTS}/postgis/liblwgeom-${POSTGIS_VER}w${OS_BUILD}${GCC_TYPE} --with-library-minor-version \ + --prefix=${PROJECTS}/postgis/liblwgeom-${POSTGIS_VER}w${OS_BUILD}${GCC_TYPE} \ ${EXTRA_CONFIGURE_ARGS} ----------------------------------------------------------------------- Summary of changes: ci/winnie/regress_postgis.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 11 04:48:02 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 11 Nov 2025 04:48:02 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-188-g8e6235c4f Message-ID: <20251111124802.D90B01680AF@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 8e6235c4f50934259ffc1b7252f469577229892b (commit) from 04760e7de531370840c60c1796458c562c0908ba (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8e6235c4f50934259ffc1b7252f469577229892b Author: Rodrigo Smarzaro Date: Tue Nov 11 11:45:45 2025 +0000 Translated PostGIS Manual using Weblate (Portuguese (Brazil)) Currently translated at 42.0% (2461 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/pt_BR/ diff --git a/doc/po/pt_BR/postgis-manual.po b/doc/po/pt_BR/postgis-manual.po index 61310f97a..acfd72803 100644 --- a/doc/po/pt_BR/postgis-manual.po +++ b/doc/po/pt_BR/postgis-manual.po @@ -1,13 +1,14 @@ # Portuguese translations for postgis package. # Automatically generated, 2023. # +# Rodrigo Smarzaro , 2025. msgid "" msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2023-09-22 19:23+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2025-11-11 12:47+0000\n" +"Last-Translator: Rodrigo Smarzaro \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -15,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.0\n" +"X-Generator: Weblate 5.4.3\n" #. Tag: chapter #, no-c-format @@ -812,9 +813,8 @@ msgid "" "The code for this extension can be found in the PostGIS extensions/" "address_standardizer and is currently self-contained." msgstr "" -"O c?digo para esta extens?o pode ser encontrado no PostGIS " -"extensions/address_standardizer e est? atualmente " -"autocontido. " +"O c?digo para esta extens?o pode ser encontrado no PostGIS " +"extensions/address_standardizer e est? atualmente autocontido." #. Tag: para #, no-c-format @@ -874,7 +874,7 @@ msgid "" msgstr "" "Esses s?o reconhecidos utilizando express?es Perl compat?veis. Esses regexs " "est?o atualmente no parseaddress-api.c e s?o relativamente f?ceis de " -"alterar, caso seja necess?rio. " +"alterar, caso seja necess?rio." #. Tag: term #, no-c-format @@ -890,7 +890,7 @@ msgid "" msgstr "" "Esses s?o reconhecidos utilizando express?es Perl compat?veis. Esses regexs " "est?o atualmente no parseaddress-api.c e s?o relativamente f?ceis de " -"alterar, caso seja necess?rio. " +"alterar, caso seja necess?rio." #. Tag: title #, no-c-format @@ -976,7 +976,7 @@ msgid "" "North, South, East, West etc." msgstr "" "? um texto (n?mero token 2): NOME DA RUA PRE-DIRECTIONAL como " -"Norte, Sul, Leste, Oeste etc. " +"Norte, Sul, Leste, Oeste etc." #. Tag: para #, no-c-format @@ -1158,7 +1158,7 @@ msgstr "" "negativos inteiros representando atributos postais, terminados por um -1, " "seguidos por um inteiro representando um tipo de regra, seguido por um " "inteiro representando o rank da regra. As regras s?o ranqueadas de 0 (menor) " -"at? 17 (maior). " +"at? 17 (maior)." #. Tag: para #, no-c-format @@ -1384,7 +1384,7 @@ msgid "" "last 3 characters of a Canadian postal code." msgstr "" "(26). Uma sequ?ncia de n?mero letra n?mero de 3 caracteres. Identifica um " -"LDU, os 3 ?ltimos caracteres de um c?digo postal canadense. " +"LDU, os 3 ?ltimos caracteres de um c?digo postal canadense." #. Tag: emphasis #, no-c-format @@ -1692,7 +1692,7 @@ msgid "" "more columns if you wish for your own purposes." msgstr "" "Uma gaz table tem pelo menos as colunas a seguir na table. Voc? talvez " -"adicione mais colunas para seus pr?prios prop?sitos. " +"adicione mais colunas para seus pr?prios prop?sitos." #. Tag: para #, no-c-format @@ -2104,7 +2104,7 @@ msgid "" msgstr "" "Embora seja desenvolvido especificamente pelos EUA, muitos conceitos e " "fun??es s?o aplic?veis e podem ser adaptados a trabalhar com endere?os de " -"outros pa?ses e outras road networks. " +"outros pa?ses e outras road networks." #. Tag: para #, no-c-format @@ -2118,7 +2118,7 @@ msgstr "" "todas as fun??es tiger relacionadas, dados reutiliz?veis como os prefixos de " "tipos de rua, sufixos, estados, v?rias tables de controle para administrar " "carregamento de dados, e tables da base do esqueleto do qual todas as tables " -"tiger carregadas herdaram. " +"tiger carregadas herdaram." #. Tag: para #, no-c-format @@ -2193,7 +2193,7 @@ msgid "" "Address Standardizer as part of PostGIS." msgstr "" "O suporte para dados Tiger 2015 e a inclus?o do Padronizador de Endere?os " -"como parte do PostGIS, s?o novos no lan?amento do PostGIS 2.2.0. " +"como parte do PostGIS, s?o novos no lan?amento do PostGIS 2.2.0." #. Tag: para #, no-c-format @@ -2204,8 +2204,8 @@ msgid "" msgstr "" "O lan?amento do PostGIS 2.1.0 tem de novo a habilidade de instalar o " "geocoder tiger com o modelo de extens?o PostgreSQL se voc? estiver usando o " -"PostgreSQL 9.1+. Refira-se a para mais detalhes. " +"PostgreSQL 9.1+. Refira-se a para mais detalhes." #. Tag: para #, no-c-format @@ -2238,7 +2238,7 @@ msgstr "" "pode processar uma string eventual de endere?o dos Estados Unidos e, usando " "os dados normalizados do censo TIGER, produzir um ponto de geometria e " "avalia??o refletindo a localiza??o do endere?o dado e likeliness da " -"localiza??o. Quanto maior o n?mero de avalia??o, pior o resultado. " +"localiza??o. Quanto maior o n?mero de avalia??o, pior o resultado." #. Tag: para #, no-c-format @@ -2259,7 +2259,7 @@ msgid "" msgstr "" "O geocoder deve ser simples de instalar e usar para qualquer pessoa familiar " "com o PotGIS, e deve ser mais f?cil de instalar e usar em todas as " -"plataformas suportadas pelo PostGIS. " +"plataformas suportadas pelo PostGIS." #. Tag: para #, no-c-format @@ -2278,7 +2278,7 @@ msgid "" msgstr "" "Isso deve ser extens?vel o suficiente para ser utilizado com dados de " "atualiza??o futuras, ou fontes de dados alternativas com mudan?as m?nimas de " -"coding. " +"coding." #. Tag: para #, no-c-format @@ -2317,7 +2317,7 @@ msgstr "" "para ser chamado como webservice. Assim como o geocoder, ele tem dois " "componentes: o geocoder e o geocoder reverso. Na documenta??o n?o fica claro " "se ele tem uma interface SQL pura conforme o geocoder ou se tem um bom " -"acordo da l?gica implementado na interface da web. " +"acordo da l?gica implementado na interface da web." #. Tag: para #, no-c-format @@ -2424,7 +2424,7 @@ msgid "" msgstr "" "Gera uma script que derruba todas as tables no esquema espec?fico que est?o " "prefixados com abrevia??o do estado. Padroniza o esquema para " -"tiger_data se nenhum esquema estiver especificado. " +"tiger_data se nenhum esquema estiver especificado." #. Tag: para #, no-c-format @@ -2439,7 +2439,7 @@ msgstr "" "prefixados com abrevia??o do estado. Padroniza o esquema para " "tiger_data se nenhum esquema estiver especificado. Essa " "fun??o ? ?til para derrubar tables de um estado antes de recarregar um " -"estado em caso de algo ter dado errado durante seu carregamento anterior. " +"estado em caso de algo ter dado errado durante seu carregamento anterior." #. Tag: refpurpose #, no-c-format @@ -2496,7 +2496,7 @@ msgstr "" "revisada para melhorar a velocidade, exatid?o do geocoding e para compensar " "ponto da linha central para o lado do endere?o que a rua est? localizada. O " "novo par?metro max_results ? ?til para especificar " -"n?meros dos melhores resultados ou apenas retornar o melhor resultado. " +"n?meros dos melhores resultados ou apenas retornar o melhor resultado." #. Tag: title #, no-c-format @@ -2512,7 +2512,7 @@ msgid "" msgstr "" "Os exemplos abaixo est?o em um ?nico processador 3.0 GHZ no Windows 7 com " "2GB ram executando PostgreSQL 9.1rc1/PostGIS 2.0 carregados com todos os " -"dados de estado Tiger MA,MN,CA, RI. " +"dados de estado Tiger MA,MN,CA, RI." #. Tag: para #, no-c-format @@ -2582,7 +2582,7 @@ msgstr "" "localiza??o, e a avalia??o. Quanto menor a avalia??o, maior a chance de " "combinar. Os resultados s?o separados com menor avalia??o em primeiro lugar. " "Pode passar nos resultados m?ximos, at? 10. Usa dados Tiger (limites, faces, " -"addr), string confusa do PostgreSQL (soundex, evenshtein). " +"addr), string confusa do PostgreSQL (soundex, evenshtein)." #. Tag: para #, no-c-format @@ -2673,7 +2673,7 @@ msgid "" msgstr "" "Altera??es: 2.2.0 : configura??es padr?o s?o guardadas em uma table chamada " "geocode_settings_default. As configura??es personalizadas est?o em " -"geocode_settings e s? cont?m aquelas que foram configuradas pelo usu?rio. " +"geocode_settings e s? cont?m aquelas que foram configuradas pelo usu?rio." #. Tag: title #, no-c-format @@ -2734,7 +2734,7 @@ msgid "" msgstr "" "Encontra todas as tables com colunas chave usadas no ingresso geocoder e " "condi??es de filtros que est?o perdendo os indexes usados nessas colunas e " -"ir?o adicionar elas. " +"ir?o adicionar elas." #. Tag: para #, no-c-format @@ -2769,9 +2769,9 @@ msgid "" "is returned as a separate record." msgstr "" "Gera uma shell script para a plataforma espec?fica para os estados que ir?o " -"baixar o trecho do censo de estado Tiger, bg e dados de tables tabblocks, " +"baixar o trecho do censo de estado Tiger, bg e dados de tables tabblocks, " "arranjar e carregar dentro do esquema tiger_data. Cada " -"state script retornou como um relato separado. " +"state script retornou como um relato separado." #. Tag: para #, no-c-format @@ -2786,7 +2786,7 @@ msgstr "" "baixar tract do censo de estado Tiger, block groups " "bg e dados de tables tabblocks, " "arranja e carrega dentro do esquema tiger_data. Cada " -"state script retornou como um relato separado. " +"state script retornou como um relato separado." #. Tag: para #, no-c-format @@ -2799,7 +2799,7 @@ msgstr "" "Utiliza unzip no Linux (7-zip no Windows por padr?o) e wget para fazer o " "download. Usa para carregar nos dados. " "Note que a menor unidade que ele faz ? um estado inteiro. Ele s? ir? " -"processar os arquivos nas pastas representativas e tempor?rias. " +"processar os arquivos nas pastas representativas e tempor?rias." #. Tag: para #, no-c-format @@ -2828,7 +2828,7 @@ msgid "" msgstr "" "loader_platform perfis de numerosas plataformas e onde as " "v?rias execut?veis est?o localizadas. Est? com o windows e linux. Mais pode " -"ser adicionado. " +"ser adicionado." #. Tag: para #, no-c-format @@ -2856,7 +2856,7 @@ msgid "" msgstr "" "inclui essa l?gica, mas se voc? instalou o geocoder tiger antes para o " "PostGIS 2.0.0 alpha5, voc? vai precisar executar esse nos estados que j? fez " -"para pegar essas tables adicionais. " +"para pegar essas tables adicionais." #. Tag: para #, no-c-format @@ -2865,7 +2865,7 @@ msgid "" "format." msgstr "" "Gerar script para carregar dados para selecionar estados no formato script " -"shell do Windows. " +"shell do Windows." #. Tag: para #, no-c-format @@ -2885,7 +2885,7 @@ msgstr "" "baixar dados Tiger, arranjar e carregar dentro do esquema " "tiger_data. Cada state script retorna como um registro " "separado. A vers?o mais nova suporta mudan?as estruturais do Tiger 2010 e " -"tamb?m carrega trecho do censo, block groups, e block tables. " +"tamb?m carrega trecho do censo, block groups, e block tables." #. Tag: para #, no-c-format @@ -2897,7 +2897,7 @@ msgstr "" "Gera uma shell script para a plataforma espec?fica para os estados que ir?o " "baixar dados do Tiger, arranjar e carregar dentro do esquema " "tiger_data. Cada state script retorna como um registro " -"separado. " +"separado." #. Tag: para #, no-c-format @@ -2912,7 +2912,7 @@ msgstr "" "download. Usa para carregar nos dados. " "Note que a menor unidade que ele faz ? um estado inteiro, mas voc? pode " "sobrescrever baixando os arquivos por conta pr?pria. Ele s? ir? processar os " -"arquivos nas pastas representativas e tempor?rias. " +"arquivos nas pastas representativas e tempor?rias." #. Tag: para #, no-c-format @@ -2921,7 +2921,7 @@ msgid "" "tract (tract), block groups (bg), and blocks (tabblocks) tables ." msgstr "" "Disponibilidade: 2.0.0 para suportar tiger 2010 dados estruturados e carrega " -"trecho (trecho) do censo , block groups (bg), e block (tabblocks) tables. " +"trecho (trecho) do censo , block groups (bg), e block (tabblocks) tables." #. Tag: para #, no-c-format @@ -2945,7 +2945,7 @@ msgid "" "Generate script to load up data for 2 states in Windows shell script format." msgstr "" "Gerar script para carregar dados para 2 estados na script de formato shell " -"do Windows. " +"do Windows." #. Tag: para #, fuzzy, no-c-format @@ -2961,7 +2961,7 @@ msgid "" "and state lookup tables." msgstr "" "Gerar uma script shell para a plataforma especificada que carrega as lookup " -"tables de condado e estado. " +"tables de condado e estado." #. Tag: para #, no-c-format @@ -2987,7 +2987,7 @@ msgid "" "downloading. It uses to load in the data." msgstr "" "Utiliza unzip no Linux (7-zip no Windows por padr?o) e wget para fazer o " -"download. Usa para carregar nos dados. " +"download. Usa para carregar nos dados." #. Tag: para #, no-c-format @@ -3011,7 +3011,7 @@ msgid "" msgstr "" "loader_platform perfis de numerosas plataformas e onde as " "v?rias execut?veis est?o localizadas. Est? com o windows e linux/unix. Mais " -"pode ser adicionado. " +"pode ser adicionado." #. Tag: para #, no-c-format @@ -3036,21 +3036,20 @@ msgid "" "load generate and run drop statements before you run this script." msgstr "" -"Se voc? estiver executando a vers?o tiger_2010 e quer " +"Se voc? estiver executando a vers?o tiger_2010 e quer " "recarregar como estado com tiger_2011, voc? vai precisar, " -"para o primeiro carregamento, gerar e executar drop statements antes de executar essa " -"script. " +"para o primeiro carregamento, gerar e executar drop statements antes de executar essa script." #. Tag: para #, no-c-format msgid "Generate script script to load nation data Windows." -msgstr "Gerar script para carregar dados de uma na??o no Windows. " +msgstr "Gerar script para carregar dados de uma na??o no Windows." #. Tag: para #, no-c-format msgid "Generate script to load up data for Linux/Unix systems." -msgstr "Gerar script para carregar dados para os sistemas Linux/Unix. " +msgstr "Gerar script para carregar dados para os sistemas Linux/Unix." #. Tag: para #, fuzzy, no-c-format @@ -3088,7 +3087,7 @@ msgstr "" "perdidas no carregamento. Assim como o geocoder ? melhorado, essa fun??o " "ser? atualizada para acomodar novos indexes que est?o sendo usados. Se essa " "fun??o n?o gera nada, significa que suas tables possuem o que achamos ser os " -"indexes chave no lugar certo. " +"indexes chave no lugar certo." #. Tag: para #, no-c-format @@ -3108,7 +3107,7 @@ msgstr "" "norm_addy que n?o tem um sufixo, prefixo e tipo " "padronizado, rua, nome de rua etc. quebrado e, campos separados. Essa fun??o " "ir? funcionar com os dados lookup compactados com o tiger_geocoder (dados do " -"censo tiger n?o s?o necess?rios). " +"censo tiger n?o s?o necess?rios)." #. Tag: para #, no-c-format @@ -3124,7 +3123,7 @@ msgstr "" "padronizado, rua, nome de rua etc. quebrado e, campos separados. Esse ? o " "primeiro passo no processo de geocodifica??o para tornar todos os endere?os " "normalizados no formato postal. Nenhum outro dado ? requerido ? parte do que " -"est? compactado com o geocoder. " +"est? compactado com o geocoder." #. Tag: para #, no-c-format @@ -3150,7 +3149,7 @@ msgid "" "schema to normalize the input address." msgstr "" "Utiliza v?rias tables lookup de controle localizadas no esquema " -"tiger para normalizar o endere?o de entrada. " +"tiger para normalizar o endere?o de entrada." #. Tag: para #, no-c-format @@ -3246,7 +3245,7 @@ msgid "" msgstr "" "Os estados varchar stateAbbrev dos EUA de dois " "caracteres. ex: MA, NY, MI. Estes s?o controlados pela table " -"state_lookup. " +"state_lookup." #. Tag: para #, no-c-format @@ -3262,7 +3261,7 @@ msgid "" msgstr "" "parsed booleana - indica se um endere?o foi formado pelo " "processo normalizador. A fun??o normalize_address coloca isso como verdade " -"antes de retornar o endere?o. " +"antes de retornar o endere?o." #. Tag: para #, no-c-format @@ -3411,7 +3410,7 @@ msgid "" msgstr "" "Dado um objeto de tipo composto norm_addy, retorna uma " "representa??o impressa dele. N?o ? necess?rio nenhum outro tipo de dados " -"al?m do que est?o compactados com o geocoder. " +"al?m do que est?o compactados com o geocoder." #. Tag: para #, no-c-format @@ -3440,7 +3439,7 @@ msgstr "" "Pega um ponto em um sistema de refer?ncia espacial conehcido e retorna um " "relato que cont?m um banco de dados de, teoricamente, poss?veis endere?os e " "um banco de dados de ruas cruzadas. Se include_strnum_range = verdade, " -"inclui o alcance da rua nas ruas cruzadas. " +"inclui o alcance da rua nas ruas cruzadas." #. Tag: para #, no-c-format @@ -3457,7 +3456,7 @@ msgstr "" "um banco de dados de ruas cruzadas. Se include_strnum_range = verdade, " "inclui o alcance da rua nas ruas cruzadas. include_strnum_range se torna " "falso se n?o passar. Os endere?os s?o separados de acordo com qual rua um " -"ponto ? mais pr?ximo, ent?o, o primeiro endere?o ? o mais certo. " +"ponto ? mais pr?ximo, ent?o, o primeiro endere?o ? o mais certo." #. Tag: para #, no-c-format @@ -3492,7 +3491,7 @@ msgid "" msgstr "" "Nota: Esta fun??o confia nos dados Tiger. Se voc? n?o carregou dados " "cobrindo a regi?o deste ponto, ent?o, voc? ter? que ter um relato cheio de " -"NULOS. " +"NULOS." #. Tag: para #, no-c-format @@ -3508,7 +3507,7 @@ msgid "" msgstr "" "intpt ? um arranjo de pontos: Estes s?o os pontos da " "linha central na rua mais pr?xima ao ponto de entrada. Existem v?rios " -"pontos, assim com existem muitos endere?os. " +"pontos, assim com existem muitos endere?os." #. Tag: para #, no-c-format @@ -3523,8 +3522,7 @@ msgstr "" "Estes s?o arranjos de poss?veis endere?os que se encaixam no ponto de " "entrada. O primeiro no arranjo ? o que mais se encaixa. Geralmente, deveria " "ter apenas um, exceto no caso de um ponto que esteja na esquina de 2 ou 3 " -"ruas, ou do ponto que esteja em algum lugar na estrada e n?o ao lado da " -"rua. " +"ruas, ou do ponto que esteja em algum lugar na estrada e n?o ao lado da rua." #. Tag: para #, no-c-format @@ -3534,7 +3532,7 @@ msgid "" "to be on)." msgstr "" "street um arranjo de varchar: Estes s?o ruas cruzadas (ou " -"a rua) (ruas que interseccionam ou s?o as ruas que o ponto est? projetado). " +"a rua) (ruas que interseccionam ou s?o as ruas que o ponto est? projetado)." #. Tag: para #, no-c-format @@ -3568,7 +3566,7 @@ msgid "" msgstr "" "Aqui, n?s escolhemos n?o incluir as variedades de endere?os para as ruas " "cruzadas e escolhemos uma localiza??o realmente pr?xima de uma esquina de 2 " -"ruas, assim, pode ser conhecido por dois endere?os diferentes. " +"ruas, assim, pode ser conhecido por dois endere?os diferentes." #. Tag: para #, no-c-format @@ -3576,9 +3574,8 @@ msgid "" "For this one we reuse our geocoded example from " "and we only want the primary address and at most 2 cross streets." msgstr "" -"Para este, n? reutilizamos nosso exemplo geocodificado de e s? queremos o endere?o prim?rio e no m?ximo 2 ruas " -"cruzadas. " +"Para este, n? reutilizamos nosso exemplo geocodificado de e s? queremos o endere?o prim?rio e no m?ximo 2 ruas cruzadas." #. Tag: para #, fuzzy, no-c-format @@ -3596,7 +3593,7 @@ msgid "" msgstr "" "Carrega uma regi?o definida de dados tiger em uma Topologia PostGIS e " "transforma os dados tiger para refer?ncia espacial da topologia e rompe para " -"a toler?ncia precisa da topologia. " +"a toler?ncia precisa da topologia." #. Tag: para #, no-c-format @@ -3614,7 +3611,7 @@ msgstr "" "de uma topologia alvo e pontos s?o estalados ? toler?ncia da topologia alvo. " "As faces, n?s e limites criados, mant?m as mesmas identidades dos originais " "dos dados Tiger, para os datasets serem reconciliados mais facilmente no " -"futuro com os dados tiger. Retorna detalhes resumidos do processo. " +"futuro com os dados tiger. Retorna detalhes resumidos do processo." #. Tag: para #, no-c-format @@ -3625,7 +3622,7 @@ msgid "" msgstr "" "Seria ?til, por exemplo, para dividir em novos distritos os dados onde voc? " "requer que os pol?gonos formados sigam as linhas centrais das ruas e para os " -"pol?gonos resultantes n?o se sobreporem. " +"pol?gonos resultantes n?o se sobreporem." #. Tag: para #, no-c-format @@ -3638,11 +3635,11 @@ msgid "" "not created a topology using the topology functions." msgstr "" "Esta fun??o confia nos dados tiger, bem como o m?dulo de instala??o da " -"topologia do PostGIS. para maiores informa??es, veja: e . Se " -"voc? n?o carregou os dados cobrindo a regi?o de interesse, nenhum relato de " -"topologia ser? criado, Esta fun??o tamb?m falhar? se voc? n?o tiver criado " -"uma topologia usando as fun??es dela. " +"topologia do PostGIS. para maiores informa??es, veja: e . Se voc? n?o " +"carregou os dados cobrindo a regi?o de interesse, nenhum relato de topologia " +"ser? criado, Esta fun??o tamb?m falhar? se voc? n?o tiver criado uma " +"topologia usando as fun??es dela." #. Tag: para #, no-c-format @@ -3656,7 +3653,7 @@ msgstr "" "de toler?ncia, nas quais depois da transforma??o os pontos limites n?o se " "alinham ou sobrep?em. Para remediar esta situa??o, voc? talvez queira " "aumentar ou diminuir a precis?o, se voc? tiver falhas na valida??o da " -"topologia. " +"topologia." #. Tag: para #, no-c-format @@ -3730,7 +3727,7 @@ msgid "" msgstr "" "Criar uma topologia para uffolk, Massachusetts in Mass State Plane Meters " "(26986), com toler?ncia 0.25 metros e ent?o carregar no condado de Suffolk " -"faces, limites e n?s tiger. " +"faces, limites e n?s tiger." #. Tag: para #, no-c-format @@ -3758,7 +3755,8 @@ msgstr "" "Estabelece valor de uma configura??o espec?fica armazenada na table " "tiger.geocode_settings. Configura??es permitem que voc? " "comute depura??o de fun??es. Os planos futuros ser?o para controlar " -"avalia??o com configura??es. A lista atual de configura??es est? em: " +"avalia??o com configura??es. A lista atual de configura??es est? em ." #. Tag: para #, no-c-format @@ -3767,7 +3765,7 @@ msgid "" "NOTICE log will output timing and queries." msgstr "" "Se voc? executar quando esta fun??o for verdade, " -"o log NOTICE ir? gerar horas e pesquisas. " +"o log NOTICE ir? gerar horas e pesquisas." #. Tag: title #, no-c-format @@ -3949,7 +3947,7 @@ msgid "" msgstr "" "layer_id ? um inteiro: A layer_id nas layers tables que a " "TopoGEometry pertence. A combina??o de topology_id, layer_id fornece uma " -"refer?ncia ?nica na table topology.layers. " +"refer?ncia ?nica na table topology.layers." #. Tag: para #, no-c-format @@ -4023,7 +4021,7 @@ msgstr "" "Um tipo composto que consiste em uma mensagem de erro e dois inteiros. A " "fun??o retorna um conjunto para indicar " "erros de valida??o e a id1 e id2 para indicar as ids dos objetos da " -"topologia envolvidas no erro. " +"topologia envolvidas no erro." #. Tag: para #, no-c-format @@ -4118,9 +4116,9 @@ msgid "" "for the layer of the TopoGeometry being defined." msgstr "" "Para qualquer uma das TopoGeometrias hier?rquicas dadas, todos os elementos " -"das TopoGeometrias filhas vir?o da mesma camada, assim com est? " -"especificado no relato topology.layer para a camada da TopoGeometria que " -"est? sendo definida. " +"das TopoGeometrias filhas vir?o da mesma camada, assim com est? especificado " +"no relato topology.layer para a camada da TopoGeometria que est? sendo " +"definida." #. Tag: para #, no-c-format @@ -4145,7 +4143,7 @@ msgid "" "components of TopoGeometry objects." msgstr "" "Um arranjo de 1 ou mais objetos TopoGeometria, geralmente usado para " -"circular componentes dos objetos de TopoGeometrias. " +"circular componentes dos objetos de TopoGeometrias." #. Tag: para #, no-c-format @@ -4200,8 +4198,8 @@ msgid "" "This function will both add the requested column to the table and add a " "record to the topology.layer table with all the given info." msgstr "" -"Esta fun??o ir? adicionar a coluna pedida e um relato para a table topology." -"layer com todas as informa??es dadas. " +"Esta fun??o ir? adicionar a coluna pedida e um relato para a table " +"topology.layer com todas as informa??es dadas." #. Tag: para #, no-c-format @@ -4211,10 +4209,10 @@ msgid "" "Otherwise this layer will contain hierarchical TopoGeometries (composed by " "TopoGeometries from the child_layer)." msgstr "" -"Se voc? n?o especificar [child_layer] (ou configurar para NULO) essa camada " +"Se voc? n?o especificar [child_layer] (ou configurar para NULO) essa camada " "ir? conter TopoGeometrias B?sicas (compostas por elementos de topologia " -"primitivos). Sen?o essa camada conter? TopoGeometrias hier?rquicas " -"(compostas por TopoGeometrias da child_layer). " +"primitivos). Sen?o essa camada conter? TopoGeometrias hier?rquicas (" +"compostas por TopoGeometrias da child_layer)." #. Tag: para #, no-c-format @@ -4327,8 +4325,8 @@ msgid "" "varname> in schema schema_name and unregisters the " "columns from topology.layer table." msgstr "" -"Derruba a coluna topogeometria da table nomeada table_name no esquema schema_name e tira os registros da " +"Derruba a coluna topogeometry da table nomeada table_name " +"no esquema schema_name e tira os registros da" #. Tag: para #, no-c-format @@ -4343,7 +4341,7 @@ msgstr "" "varname> no esquema schema_name e tira os registros da " "colunas da table topology.layer. Retorna um resumo do drop status. NOTA: ela " "primeiro configura todos os valores para NULO antes de derrubar checks de " -"integridade referencial. " +"integridade referencial." #. Tag: refpurpose #, no-c-format @@ -4753,7 +4751,7 @@ msgid "" "positives that were existent in prior versions." msgstr "" "Melhorias: 2.0.0 limite mais eficiente cruzando deten??o e consertos para " -"falsos positivos que existiam em vers?es anteriores. " +"falsos positivos que existiam em vers?es anteriores." #. Tag: para #, no-c-format @@ -5250,7 +5248,8 @@ msgid "" "SQL/MM." msgstr "" "Esta se??o cobre as fun??es da topologia para adicionar, mover, deletar e " -"dividir limites, faces e n?s. Todas essas fun??es s?o definidas pelo " +"dividir limites, faces e n?s. Todas essas fun??es s?o definidas pelo ISO SQL/" +"MM." #. Tag: refpurpose #, no-c-format @@ -5282,10 +5281,10 @@ msgid "" "node, an exception is thrown." msgstr "" "O sistema de refer?ncia espacial (srid) da geometria pontual n?o ? o mesmo " -"que a topologia, o apoint n?o ? uma geometria pontual, o " +"que a topologia, o apoint n?o ? uma geometria pontual, o " "ponto ? nulo, ou o ponto intersecta um limite existente (mesmo nos limites), " "ent?o uma exce??o ? aberta. Se o ponto j? existe como um n?, uma exce??o ? " -"aberta. " +"aberta." #. Tag: para #, no-c-format @@ -5294,7 +5293,7 @@ msgid "" "not within the face, then an exception is thrown." msgstr "" "Se aface n?o ? nula e o apoint n?o " -"est? dentro da face, ent?o, uma exce??o ? aberta. " +"est? dentro da face, ent?o, uma exce??o ? aberta." #. Tag: para #, no-c-format @@ -5370,7 +5369,7 @@ msgid "" msgstr "" "Se o anode e anothernode n?o s?o os " "pontos de come?o e fim da alinestring ent?o, uma exce??o " -"? aberta. " +"? aberta." #. Tag: para #, no-c-format @@ -5391,7 +5390,7 @@ msgid "" "face and replace it with two new faces." msgstr "" "Adiciona um novo limite e, se uma face for dividida, deleta a face original " -"e substitui por duas novas faces. " +"e substitui por duas novas faces." #. Tag: para #, no-c-format @@ -5401,13 +5400,12 @@ msgid "" "edge." msgstr "" "Adiciona um novo limite e, se uma face for dividida, deleta a face original " -"e substitui por duas novas faces. Retorna a id do novo limite adicionado. " +"e substitui por duas novas faces. Retorna a id do novo limite adicionado." #. Tag: para #, no-c-format msgid "Updates all existing joined edges and relationships accordingly." -msgstr "" -"Atualiza todos os limites existentes e relacionamentos em conformidade. " +msgstr "Atualiza todos os limites existentes e relacionamentos em conformidade." #. Tag: para #, no-c-format @@ -5447,7 +5445,7 @@ msgid "" "face and add a new face." msgstr "" "Adiciona um novo limite e, se uma face for dividida, modifica a face " -"original e adiciona uma nova face. " +"original e adiciona uma nova face." #. Tag: para #, no-c-format @@ -5456,7 +5454,7 @@ msgid "" "add a new one." msgstr "" "Adiciona um novo limite e, se uma face for dividida, modifica a face " -"original e adiciona uma nova. " +"original e adiciona uma nova." #. Tag: para #, no-c-format @@ -5510,7 +5508,7 @@ msgstr "" "Retorna a id de uma face nova criada ou NULA, se nenhuma face nova for " "criada. Nenhuma face nova ? criada quando o limite removido est? pendurado, " "isolado ou confinado na face universal (possivelmente fazendo a inunda??o " -"universal dentro da face no outro lado). " +"universal dentro da face no outro lado)." #. Tag: para #, no-c-format @@ -5529,7 +5527,7 @@ msgid "" msgstr "" "Se qualquer argumento for nulo, o limite dado ? desconhecido (deve existir " "na table edge do esquema de topologia), o nome da " -"topologia ? inv?lido, logo, um erro ? lan?ado. " +"topologia ? inv?lido, logo, um erro ? lan?ado." #. Tag: para #, no-c-format @@ -5629,7 +5627,7 @@ msgid "" "original edge and adding a new edge." msgstr "" "Divide um limite criando um novo n? junto de um limite existente, " -"modificando o limite original e adicionando um novo limite. " +"modificando o limite original e adicionando um novo limite." #. Tag: para #, no-c-format @@ -5768,7 +5766,7 @@ msgstr "" "n? com uma localiza??o de ponto apoint junto co i limite " "atual, deletando o limite original e substituindo-o por dois novos. Retorna " "a id do novo n? criado que se une aos novos limites. Atualiza todos os " -"limites unidos e relacionamentos em conformidade. " +"limites unidos e relacionamentos em conformidade." #. Tag: para #, no-c-format @@ -5780,10 +5778,10 @@ msgid "" "exception is thrown." msgstr "" "Se o sistema de refer?ncia espacial (srid) da geometria pontual n?o ? o " -"mesmo que a topologia, o apoint n?o ? uma geometria " +"mesmo que a topologia, o apoint n?o ? uma geometria " "pontual, o ponto ? nulo, o ponto j? existe como um n?, o limite n?o " "corresponde a um limite existente ou o ponto n?o est? dentro do limite, " -"ent?o, uma exce??o ? aberta. " +"ent?o, uma exce??o ? aberta." #. Tag: para #, no-c-format @@ -6054,7 +6052,7 @@ msgstr "" #. Tag: refpurpose #, no-c-format msgid "Returns the name of a topology (schema) given the id of the topology." -msgstr "Retorna o nome de uma topologia (esquema) dada a id da topologia. " +msgstr "Retorna o nome de uma topologia (esquema) dada a id da topologia." #. Tag: para #, no-c-format @@ -6078,8 +6076,8 @@ msgstr "" #, no-c-format msgid "Returns a set of ordered edges that bound aface." msgstr "" -"Retorna um conjunto de limites ordenados que amarram aface. " +"Retorna um conjunto de limites ordenados que amarram " +"aface." #. Tag: para #, no-c-format @@ -6118,7 +6116,7 @@ msgstr ", , " #. Tag: refpurpose #, no-c-format msgid "Returns the polygon in the given topology with the specified face id." -msgstr "Retorna o pol?gono na topologia dada com a id de face especificada. " +msgstr "Retorna o pol?gono na topologia dada com a id de face especificada." #. Tag: para #, no-c-format @@ -6143,7 +6141,7 @@ msgid "" "given edge side." msgstr "" "Retorna o conjunto ordenado de identificadores de limites assinados, " -"conhecidos caminhando em um lado da beirada. " +"conhecidos caminhando em um lado da beirada." #. Tag: para #, no-c-format @@ -6166,7 +6164,7 @@ msgid "" msgstr "" "Se voc? passa uma id limite positiva, a caminhada come?a no lado esquerdo do " "limite correspondente e segue sua dire??o. Se voc? passa uma id limite " -"negativa, a caminhada come?a no lado direito dele e orienta-se para tr?s. " +"negativa, a caminhada come?a no lado direito dele e orienta-se para tr?s." #. Tag: para #, no-c-format @@ -6177,12 +6175,12 @@ msgid "" msgstr "" "Se max_edges n?o ? nulo, n?o mais que aqueles relatos s?o " "retornados pela fun??o. Isto foi feito para ser um par?metro seguro ao lidar " -"com topologias possivelmente inv?lidas. " +"com topologias possivelmente inv?lidas." #. Tag: para #, no-c-format msgid "This function uses edge ring linking metadata." -msgstr "Esta fun??o utiliza anel limite vinculando metadados. " +msgstr "Esta fun??o utiliza anel limite vinculando metadados." #. Tag: para #, no-c-format @@ -6207,7 +6205,7 @@ msgstr "" "uma sequ?ncia e uma id limite assinada. Os n?meros sequ?ncia come?am com o " "valor 1. Um limite positivo come?a no dado n?. Um limite negativo termina no " "dado n?. Limites fechado aparecer?o duas vezes (com ambos sinais). A ordem ? " -"sentido hor?rio, come?ando do norte. " +"sentido hor?rio, come?ando do norte." #. Tag: para #, no-c-format @@ -6216,7 +6214,7 @@ msgid "" "thus usable to build edge ring linking." msgstr "" "Esta fun??o computa ordena??o em vez de deriva??o dos metadados e ?, assim, " -"?til para construir o v?nculo do limite anel. " +"?til para construir o v?nculo do limite anel." #. Tag: para #, no-c-format @@ -6235,7 +6233,7 @@ msgid "" "ways." msgstr "" "Esta se??o cobre as fun??es para processar topologias de maneiras n?o " -"padronizadas. " +"padronizadas." #. Tag: refpurpose #, no-c-format @@ -6356,8 +6354,7 @@ msgstr "" "Adiciona uma borda ? edge table e n?s associados ?s nodes tables do esquema " "toponame especificado, usando a linestring geometria " "espec?fica e retorna a bordaid do novo ou j? existente relato. A nova borda " -"adicionada tem a face \"universal\" nos dois lados e se conecta com si " -"mesma. " +"adicionada tem a face \"universal\" nos dois lados e se conecta com si mesma." #. Tag: para #, no-c-format @@ -6378,7 +6375,7 @@ msgid "" msgstr "" "A geometria da aline deve ter o mesmo srid definido para a topologia, sen?o um erro inv?lido ? lan?ado no " -"sistema de refer?ncia espacial. " +"sistema de refer?ncia espacial." #. Tag: para #, no-c-format @@ -6471,7 +6468,7 @@ msgid "" msgstr "" "A geometria da apolygon deve ter o mesmo srid definido para a topologia, sen?o um erro inv?lido ? lan?ado no " -"sistema de refer?ncia espacial. " +"sistema de refer?ncia espacial." #. Tag: refpurpose #, no-c-format @@ -6554,7 +6551,7 @@ msgstr "Construtores de TopoGeometria" msgid "" "This section covers the topology functions for creating new topogeometries." msgstr "" -"Esta se??o cobre as fun??es da topologia para criar novas topogeometrias. " +"Esta se??o cobre as fun??es da topologia para criar novas topogeometrias." #. Tag: refpurpose #, no-c-format @@ -6775,8 +6772,8 @@ msgid "" "This section covers the topology functions for editing existing " "topogeometries." msgstr "" -"Esta se??o cobre as fun??es da topologia para editar topogeometrias " -"existentes. " +"Esta se??o cobre as fun??es da topologia para editar topogeometrias " +"existentes." #. Tag: refpurpose #, no-c-format @@ -6905,7 +6902,7 @@ msgstr "" "Retorna um contendo os tipos e " "elementos da dada TopoGeometria (elementos primitivos). Isto ? parecido com " "GetTopoGeomElements, mas em vez de retornar os elementos como dataset, " -"retorna como um arranjo. " +"retorna como um arranjo." #. Tag: para #, no-c-format @@ -6999,7 +6996,7 @@ msgstr "" "varname> ? usado. Passa em uma string vazia para nsprefix para pegar um " "espa?o n?o qualificado. A precis?o (padr?o: 15) e par?metros (padr?o 1) de " "op??es, se dados, s?o passados inalterados para a chamada subjacente para " -"ST_AsGML. " +"ST_AsGML." #. Tag: para #, no-c-format @@ -7031,7 +7028,7 @@ msgid "" "Edge and Node tag identifiers." msgstr "" "O par?metro idprefix, se dado, ser? antecipado aos " -"identificadores tag de bordas e n?s. " +"identificadores tag de bordas e n?s." #. Tag: para #, no-c-format @@ -7084,10 +7081,9 @@ msgid "" "\"serial\" and an \"edge_id\" of type integer; the code will query the table " "for \"edge_id\" so it is recommended to add an index on that field." msgstr "" -"? esperado que a tabela, se dada, tenha um campo \"arc_id\" do tipo " -"\"serial\" e uma \"edge_id\" de tipo inteiro; o c?digo ir? consultar a " -"tabela para \"edge_id\", ent?o ? recomendado adicionar um index naquele " -"campo. " +"? esperado que a tabela, se dada, tenha um campo \"arc_id\" do tipo \"serial" +"\" e uma \"edge_id\" de tipo inteiro; o c?digo ir? consultar a tabela para " +"\"edge_id\", ent?o ? recomendado adicionar um index naquele campo." #. Tag: para #, no-c-format @@ -7980,7 +7976,7 @@ msgstr "" "osgeo.org/postgis/ticket/748 para um exemplo de problema resolvido " "configurando com este. NOTA: que voc? n?o est? perdendo muito desligando " "isso. ? usado para ajuda internacional para o carregador GUI que ainda n?o " -"est? documentado e permanece experimental. " +"est? documentado e permanece experimental." #. Tag: para #, no-c-format @@ -8334,7 +8330,7 @@ msgid "" msgstr "" "Se voc? configurou o PostGIS usando o n?o padronizado PostgreSQL, GEOS, ou " "Proj4 localiza??es, talvez voc? precise adicionar a biblioteca de " -"localiza??es deles ? LD_LIBRARY_PATH vari?vel de ambiente. " +"localiza??es deles ? LD_LIBRARY_PATH vari?vel de ambiente." #. Tag: para #, no-c-format @@ -8349,12 +8345,12 @@ msgid "" msgstr "" "Atualmente, o faz verifica??o confia nas vari?veis de " "ambiente PATH e PGPORT quando vai fazer as " -"verifica??es - ele n?o usa a vers?o PostgreSQL que " +"verifica??es - ele n?o usa a vers?o PostgreSQL que " "talvez tenha sido especificada utilizando o par?metro de configura??o " "--with-pgconfig. Portanto, certifique-se que para " "modificar seu PATH para ser compat?vel com a instala??o do PostgreSQL " "detectada durante a configura??o ou esteja preparado para iminentes " -"aborrecimentos. " +"aborrecimentos." #. Tag: para #, no-c-format @@ -8507,12 +8503,12 @@ msgid "" "a building block for your own geocoder or use it to standardize your " "addresses for easier compare of addresses." msgstr "" -"O padronizador pode ser usado em conjun??o com a extens?o tiger geocoder " -"PostGIS compactada como uma reposi??o para a discutida. Para usar como reposi??o . Voc? tamb?m pode utilizar " -"como um building block para seu pr?prio geocoder ou como padronizar seu " -"endere?o para uma compara??o de endere?os mais f?cil. " +"O padronizador pode ser usado em conjun??o com a extens?o tiger geocoder " +"PostGIS compactada como uma reposi??o para a discutida. Para usar como reposi??o . Voc? tamb?m pode utilizar como um " +"building block para seu pr?prio geocoder ou como padronizar seu endere?o " +"para uma compara??o de endere?os mais f?cil." #. Tag: para #, no-c-format @@ -8556,7 +8552,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "The following test requires no rules, gaz, or lex tables" -msgstr "O teste seguinte n?o requere tables rules, gaz ou lex." +msgstr "O teste seguinte n?o requer tables rules, gaz ou lex." #. Tag: para #, no-c-format @@ -8723,7 +8719,7 @@ msgstr "" "loader_variables." #. Tag: para -#, fuzzy, no-c-format +#, no-c-format msgid "" "Create a folder called temp in the gisdata folder or " "wherever you designated the staging_fold to be. This will " @@ -8731,7 +8727,7 @@ msgid "" msgstr "" "Criar uma pasta chamada temp na pasta gisdata ou onde " "designar a staging_fold. Esta ser? a pasta onde o " -"carregador extrai os dados tiger baixados. " +"carregador extrai os dados tiger baixados." #. Tag: para #, no-c-format @@ -8828,9 +8824,9 @@ msgstr "" "tentar corrigir suas imperfei??es demanda um grande n?mero de recursos. Como " "tal n?s integramos com outro projeto que tem um mecanismo de padronizador de " "endere?os muito melhor. Para usar esse novo address_standardizer, voc? " -"compila a extens?o como est? descrito em e instala como uma " -"extens?o no seu banco de dados. " +"compila a extens?o como est? descrito em e instala como uma extens?o no " +"seu banco de dados." #. Tag: para #, no-c-format @@ -8965,11 +8961,11 @@ msgid "" "Note that you can install these piecemeal. You don't have to load all the " "states you want all at once. You can load them as you need them." msgstr "" -"Para carregar dados do estado referir-se a para gerar uma script de dados de " -"carregamento para sua plataforma para os estados que deseja. Note que voc? " -"pode instalar estes gradativamente. Voc? n?o precisa carregar todos os " -"estados de uma s? vez. Pode carreg?-los ? medida que for precisando deles. " +"Para carregar dados do estado referir-se a para gerar uma script de dados de carregamento " +"para sua plataforma para os estados que deseja. Note que voc? pode instalar " +"estes gradativamente. Voc? n?o precisa carregar todos os estados de uma s? " +"vez. Pode carreg?-los ? medida que for precisando deles." #. Tag: para #, no-c-format @@ -9065,7 +9061,7 @@ msgid "" "go as you expected." msgstr "" "Existem v?rias coisas para averiguar quando a instala??o ou atualiza??o n?o " -"saem como o esperado. " +"saem como o esperado." #. Tag: para #, no-c-format @@ -9108,16 +9104,16 @@ msgid "" "already has PostGIS installed." msgstr "" "Se sua atualiza??o falhar, certifique-se que voc? est? restaurando em um " -"banco de dados que j? possui o PostGIS instalado. " +"banco de dados que j? possui o PostGIS instalado." #. Tag: para -#, fuzzy, no-c-format +#, no-c-format msgid "" "Also check that configure has correctly detected the location and version of " "PostgreSQL, the Proj library and the GEOS library." msgstr "" "Tamb?m certifique que a configura??o detectou a localiza??o e vers?o " -"corretas do PostgreSQL, da biblioteca do Proj4 e da biblioteca do GEOS. " +"corretas do PostgreSQL, da biblioteca do Proj4 e da biblioteca do GEOS." #. Tag: para #, no-c-format @@ -9131,7 +9127,7 @@ msgstr "" "postgis_config.h. Verifique que as vari?veis " "POSTGIS_PGSQL_VERSION, POSTGIS_PROJ_VERSION e POSTGIS_GEOS_VERSION foram configuradas " -"corretamente. " +"corretamente." #. Tag: title #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/pt_BR/postgis-manual.po | 320 ++++++++++++++++++++--------------------- 1 file changed, 158 insertions(+), 162 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 11 06:47:47 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 11 Nov 2025 06:47:47 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-189-g286ab621f Message-ID: <20251111144748.2E3C416A63B@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 286ab621f98cc8f91bcefcc0dfc28659f09f03fd (commit) from 8e6235c4f50934259ffc1b7252f469577229892b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 286ab621f98cc8f91bcefcc0dfc28659f09f03fd Author: Denys Kovshun Date: Tue Nov 11 13:16:12 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 77.9% (4566 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 70c5f3b0c..7f8159bea 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-10 19:47+0000\n" +"PO-Revision-Date: 2025-11-11 14:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -39826,51 +39826,54 @@ msgid "" "kind of crossing behavior exists between them. 0 indicates no crossing. This " "is only supported for LINESTRINGs." msgstr "" +"?????? ??? ?????, ???????? ???? ????? ??? -3 ?? 3, ?? ?????? ?? ??? ???????? " +"??? ????. 0 ??????? ??????????? ????????. ????????????? ?????? ??? " +"LINESTRINGs." #. Tag: para #, no-c-format msgid "The crossing number has the following meaning:" -msgstr "" +msgstr "????? ???????? ??? ???? ????????:" #. Tag: para #, no-c-format msgid "0: LINE NO CROSS" -msgstr "" +msgstr "0: ????? ??? ????????" #. Tag: para #, no-c-format msgid "-1: LINE CROSS LEFT" -msgstr "" +msgstr "-1: ??????? ????? ?????" #. Tag: para #, no-c-format msgid "1: LINE CROSS RIGHT" -msgstr "" +msgstr "1: ??????? ????? ??????" #. Tag: para #, no-c-format msgid "-2: LINE MULTICROSS END LEFT" -msgstr "" +msgstr "-2: ?????? ????? ?????????? ???????" #. Tag: para #, no-c-format msgid "2: LINE MULTICROSS END RIGHT" -msgstr "" +msgstr "2: ????? ?????????? ?????? ??????" #. Tag: para #, no-c-format msgid "-3: LINE MULTICROSS END SAME FIRST LEFT" -msgstr "" +msgstr "-3: ????? ?????????? ?????? ??? ? ????? ?????? ?????" #. Tag: para #, no-c-format msgid "3: LINE MULTICROSS END SAME FIRST RIGHT" -msgstr "" +msgstr "3: ????? ?????????? ?????? ??? ? ????? ?????? ????????" #. Tag: para #, no-c-format msgid "Availability: 1.4" -msgstr "" +msgstr "???????????: 1.4" #. Tag: para #, no-c-format @@ -39878,18 +39881,20 @@ msgid "" "Example: LINE CROSS LEFT and LINE CROSS " "RIGHT" msgstr "" +"???????: ????? ????????? ??????? ? ????? " +"????????? ????????" #. Tag: para #, no-c-format msgid "Blue: Line A; Green: Line B" -msgstr "" +msgstr "?????: ????? A; ???????: ????? B" #. Tag: para #, no-c-format msgid "" "Example: LINE MULTICROSS END SAME FIRST " "LEFT and LINE MULTICROSS END SAME FIRST RIGHT" -msgstr "" +msgstr "???????:" #. Tag: para #, no-c-format @@ -39897,12 +39902,16 @@ msgid "" "Example: LINE MULTICROSS END LEFT and " "LINE MULTICROSS END RIGHT" msgstr "" +"???????: ????? ?????????? ?????? ??? " +"????? ?????? ????? ? ????? ?????????? ?????? ??? ????? ?????? ??????" #. Tag: para #, no-c-format msgid "" "Example: Finds all streets that cross" msgstr "" +"???????:????????? ??? ??????, ??? " +"?????????????" #. Tag: refpurpose #, no-c-format @@ -39910,6 +39919,8 @@ msgid "" "Tests if two geometries represent the same geometry and have points in the " "same directional order" msgstr "" +"?????????, ?? ??? ????????? ????????????? ???? ? ?? ? ????????? ? ????? " +"????? ? ?????? ? ???? ? ??????? ?????????" #. Tag: para #, no-c-format @@ -39918,6 +39929,9 @@ msgid "" "geometries are equal and the coordinates are in the same order; otherwise it " "returns f (FALSE)." msgstr "" +"ST_OrderingEquals ???????? ??? ????????? ? ???????? t (TRUE), ???? ????????? " +"????? ? ?????????? ????? ????????? ???????; ? ?????? ??????? ???????? f " +"(FALSE)." #. Tag: para #, no-c-format @@ -39926,16 +39940,18 @@ msgid "" "SQL-MM. http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3." "htm#ST_OrderingEquals" msgstr "" +"?? ??????? ??????????? ?????????? ?? ???????????? ArcSDE SQL, ? ?? SQL-MM. " +"http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEquals" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.43" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.43" #. Tag: para #, no-c-format msgid ", , " -msgstr "" +msgstr ", , " #. Tag: refpurpose #, no-c-format @@ -39943,6 +39959,8 @@ msgid "" "Tests if two geometries have the same dimension and intersect, but each has " "at least one point not in the other" msgstr "" +"?????????, ?? ??? ????????? ????? ???????? ??????? ? ?????????????, ??? " +"????? ? ??? ??? ????????? ???? ?????, ??? ?? ???????? ?? ?????" #. Tag: para #, no-c-format @@ -39953,6 +39971,11 @@ msgid "" "equivalently, neither one covers the other). The overlaps relation is " "symmetric and irreflexive." msgstr "" +"???????? TRUE, ???? ????????? A ? B ??????????? ???????????????. ??? " +"????????? ??????????????, ???? ???? ????? ????????? ??????, ?? ????????? " +"??????? ????????????? ? ????? ??????? ? ????? ? ??? ??? ????????? ???? ????? " +"????????? ????? (???, ?? ????????????, ????? ? ??? ?? ???????? ????). " +"?????????? ?????????? ? ??????????? ? ??????????????." #. Tag: para #, no-c-format @@ -39960,6 +39983,8 @@ msgid "" "In mathematical terms: ST_Overlaps(A, B) ? ( dim(A) = dim(B) = " "dim( Int(A) ? Int(B) )) ? (A ? B ? A) ? (A ? B ? B) " msgstr "" +"? ???????????? ????????: ST_Overlaps(A, B) ? ( dim(A) = dim(B) = " +"dim( Int(A) ? Int(B) )) ? (A ? B ? A) ? (A ? B ? B) " #. Tag: para #, no-c-format @@ -39967,16 +39992,18 @@ msgid "" "&index_aware; To avoid index use, use the function _ST_Overlaps." msgstr "" +"&index_aware; ??? ???????? ???????????? ???????, ?????????????? ??????? " +"_ST_Overlaps." #. Tag: para #, no-c-format msgid "&sfs_compliant; s2.1.1.2 // s2.1.13.3" -msgstr "" +msgstr "&sfs_compliant; s2.1.1.2 // s2.1.13.3" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.32" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.32" #. Tag: para #, no-c-format @@ -39984,11 +40011,13 @@ msgid "" "ST_Overlaps returns TRUE in the " "following situations:" msgstr "" +"ST_Overlaps ???????? TRUE ? ????? " +"?????????:" #. Tag: para #, no-c-format msgid "MULTIPOINT / MULTIPOINT" -msgstr "" +msgstr "MULTIPOINT / MULTIPOINT" #. Tag: para #, no-c-format @@ -39996,6 +40025,8 @@ msgid "" "A Point on a LineString is contained, but since it has lower dimension it " "does not overlap or cross." msgstr "" +"????? ?? ????????? ???????? ?????????, ??? ???????? ???? ??? ?????? ??????, " +"???? ?? ????????????? ? ?? ??????????????." #. Tag: para #, no-c-format @@ -40003,6 +40034,8 @@ msgid "" "A LineString that partly covers a Polygon intersects and crosses, but does " "not overlap since it has different dimension." msgstr "" +"?????, ??? ???????? ???????? ????????????, ????????????? ? ????????? ????, " +"??? ?? ??????????, ???????? ??? ????? ??????." #. Tag: para #, no-c-format @@ -40010,6 +40043,9 @@ msgid "" "Two Polygons that intersect but with neither contained by the other overlap, " "but do not cross because their intersection has the same dimension." msgstr "" +"??? ?????????????, ??? ?????????????, ??? ????? ? ??? ?? ????????? ? ??????, " +"??????????????, ??? ?? ?????????????, ???????? ?? ??????? ??? ????????? " +"??????." #. Tag: para #, no-c-format @@ -40017,6 +40053,8 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format @@ -40024,6 +40062,8 @@ msgid "" "Tests if two geometries have a topological relationship matching an " "Intersection Matrix pattern, or computes their Intersection Matrix" msgstr "" +"?????????, ?? ??? ????????? ????? ???????????? ??'????, ?? ?????????? " +"??????? ??????? ????????, ??? ???????? ?? ??????? ????????" #. Tag: para #, no-c-format @@ -40033,6 +40073,10 @@ msgid "" "href=\"http://en.wikipedia.org/wiki/DE-9IM\">Dimensionally Extended 9-" "Intersection Model (DE-9IM)." msgstr "" +"?? ??????? ?????????? ?????????? ?? ????????? ?????????? (???????????) " +"????????? ??? ????? ???????????, ?? ????????? ? ?????? ? ??????????? ????????? 9-???????? " +"(DE-9IM)." #. Tag: para #, no-c-format @@ -40042,6 +40086,10 @@ msgid "" "geometries. It is represented by a 9-character text string using the symbols " "'F', '0', '1', '2' (e.g. 'FF1FF0102')." msgstr "" +"DE-9IM ???????????? ?? 9-????????? ???????, ?? ?????? ?????? ????????? ??? " +"???????????, ??????? ?? ?????????? ????????? ???? ?????????. ??? " +"????????????? 9-?????????? ????????? ?????? ?? ????????????? ???????? ?F?, " +"?0?, ?1?, ?2? (?????????, ?FF1FF0102?)." #. Tag: para #, no-c-format @@ -40062,11 +40110,28 @@ msgid "" "\"Interior-Intersects\" has the DE-9IM pattern T********, which " "is not evaluated by any named predicate." msgstr "" +"?????? ??? ??????????? ???????? ????? ??????????, ?????????? ??????? " +"???????? ? ???????? ??????? ????????. ??????? ?????? " +"??????? ????????? ??????? ?T? (?? ??????? ???????? ?? ?????????) ?? ?*? (?? " +"??????? ?????-??? ?????????). ???????? ?????????? ????????? ?????????????? " +"????????? ????????? , , , , , , , , , ?? . ???????????? ?????? " +"??????? ???????? ?????????? ?????? ???? ????????, ???????????? ???? ?? ???? " +"????. ?? ????? ???????? ?????????? ?????????? ?????????, ??? ?? ????? " +"?????????? ??????? ??????????? ????????. ?????????, ?????????? ?????????? " +"???????????? ??? ?????? DE-9IM T********, ???? ?? ?????????? " +"?????? ?????????? ??????????." #. Tag: para #, no-c-format msgid "For more information refer to ." msgstr "" +"??? ????????? ?????????? ?????????? ???. ." #. Tag: para #, no-c-format @@ -40075,6 +40140,9 @@ msgid "" "spatially related according to the given intersectionMatrixPattern." msgstr "" +"??????? 1: ?????????, ?? ??? ????????? " +"???'????? ?????????? ?????????? ?? ???????? " +"intersectionMatrixPattern." #. Tag: para #, no-c-format @@ -40085,6 +40153,11 @@ msgid "" "using a relationship pattern that requires intersection, then include the " "&& index call." msgstr "" +"?? ??????? ??? ????????? ???????? ?????????? ??????????? ????????, ?? ?? " +"??????? ???????????? ?????? ???????. ??????? ??????? ? ????, ?? ????? " +"????????? ? ????????? ??? ?????????, ??? ?? ????????????? (?????????, " +"Disjoint). ???? ?? ?????????????? ?????? ????????, ???? ??????? ????????, " +"???????? ?????? ??????? &&." #. Tag: para #, no-c-format @@ -40094,6 +40167,10 @@ msgid "" "performance optimizations which are not available with full relate " "evaluation." msgstr "" +"????? ??????????????? ??????? ?????????? ????????, ???? ???? ????????, " +"???????? ???? ??????????? ???????????? ??????????? ??????, ???? ????? ?????. " +"???? ????, ???? ???? ????????????? ??????????? ??????????????, ??? " +"?????????? ??? ?????? ?????? ????????." #. Tag: para #, no-c-format @@ -40103,6 +40180,10 @@ msgid "" "matrix string can be tested for matching a DE-9IM pattern using ." msgstr "" +"??????? 2: ???????? ????????? ????? DE-" +"9IM ??? ???????????? ?????????? ??? ????? ???????? ???????????. ????????? " +"????? ????? ?????????? ?? ????????????? ??????? DE-9IM ?? ????????? ." #. Tag: para #, no-c-format @@ -40113,6 +40194,11 @@ msgid "" "MultiLineStrings are considered to lie in the DE-9IM Interior or Boundary. " "The boundaryNodeRule values are:" msgstr "" +"??????? 3: ?? ? ??????? 2, ??? ???????? " +"??????? ??????? ???????? ?????. ??????? " +"???????? ????? ???????? ????? ????? ????????????, ?? ??????? ????? " +"MultiLineStrings ?????????? ??????, ?? ?????? ? ?????????? ??????? DE-9IM " +"??? ?? ????. ???????? boundaryNodeRule ? ??????:" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 120 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 103 insertions(+), 17 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 11 13:09:30 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 11 Nov 2025 13:09:30 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-160-gef21808 Message-ID: <20251111210931.095CA169DCA@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via ef2180888e17e813ce63d87d77158cbc01bd2d1b (commit) from e478a5fc17773ddcdc872a2e83c3c2a4d607bf48 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ef2180888e17e813ce63d87d77158cbc01bd2d1b Author: Regina Obe Date: Tue Nov 11 16:09:23 2025 -0500 Flip Regina to Repo Administrator diff --git a/content/development/rfcs/rfc05.md b/content/development/rfcs/rfc05.md index 43cc366..53a807c 100644 --- a/content/development/rfcs/rfc05.md +++ b/content/development/rfcs/rfc05.md @@ -1,7 +1,7 @@ --- title: "RFC-5: PostGIS Core Contributor Guidelines" author: Regina Obe -version: 2.1 +version: 2.2 category: rfcs date: "2025-11-11" draft: false @@ -43,7 +43,7 @@ New core contributors are responsible for having read, and understood this docum # Repo Administrator One member of the Project Steering Committee will be designated as the Repo Administrator. That person will be responsible for giving write access to folks, updating the CREDITS, and other repo related management. -Paul Ramsey is currently designated as the Repo Administrator. +Regina Obe is currently designated as the Repo Administrator. # Commit and Bug, Feature Tracking Practices ----------------------------------------------------------------------- Summary of changes: content/development/rfcs/rfc05.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- postgis.net From trac at osgeo.org Tue Nov 11 13:31:20 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 11 Nov 2025 21:31:20 -0000 Subject: [PostGIS] #6014: Change weblate to use pull request for documentation Message-ID: <046.d9baa10217dff7d8c1976e9562850a4b@osgeo.org> #6014: Change weblate to use pull request for documentation ---------------------------+-------------------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: Website Management, Bots Component: documentation | Version: master Keywords: | ---------------------------+-------------------------------------- I think strk had mentioned this. Given I seem to be spending so much time fixing doc xml parsing errors. it's probably a good idea to atempt this again. Last time we tried I ran into issue, but might have been that weblate couldn't handle pull requests with subfolders -- we had had https://git.osgeo.org/gitea now that it's just https://gitea.osgeo.org, might work better -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Nov 11 13:57:42 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 11 Nov 2025 13:57:42 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-190-g0ed7cb551 Message-ID: <20251111215742.AF56216A2A9@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 0ed7cb55169c8ded206e39a61e54f5e3d3872326 (commit) from 286ab621f98cc8f91bcefcc0dfc28659f09f03fd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0ed7cb55169c8ded206e39a61e54f5e3d3872326 Author: Regina Obe Date: Tue Nov 11 16:57:35 2025 -0500 Fix Ukranian xml parsing issues diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 7f8159bea..492c09252 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -33444,7 +33444,7 @@ msgid "" msgstr "" "???????????? ????? ? ??????? ??????? ??????????? ????????? ? ???? ?????? " "??????? ??????????? ?????????, ?????????????? ???????? ???????? ?????????? " -"????????. ???????????? ?NearestNeighbor?, ???? ???????? ?? ???????, ? " +"????????. ???????????? 'NearestNeighbor', ???? ???????? ?? ???????, ? " "maxerror ? ????????? 0,125, ???? maxerr ?? ???????." #. Tag: para @@ -39329,8 +39329,8 @@ msgid "" "have the quirk that \"boundaries are not within their geometry\"." msgstr "" "?? ???????, ?? ??????? ???? ??????????????? ??????? , ???????? ???? ??? ???????? ??????????, ??? ?? ??????? ???????????, ?? ?" -"???? ?? ??????????? ????????? ?? ??????????." +"\"/>, ???????? ???? ??? ???????? ??????????, ??? ?? ??????? ???????????, ?? \"" +"???? ?? ??????????? ????????? ?? ?????????\"." #. Tag: para #, no-c-format @@ -39397,7 +39397,7 @@ msgid "" msgstr "" "?? ???????, ?? ??????? ???? ??????????????? ??????? , ???????? ???? ??? ???????? ??????????, ??? ?? ??????? " -"???????????, ?? ?????????? ?? ??????? ????? ????." +"???????????, ?? \"????????? ?? ??????? ????? ???\"." #. Tag: para #, no-c-format @@ -39462,7 +39462,7 @@ msgid "" "false. The crosses relation is symmetric and irreflexive." msgstr "" "???????? ??? ??????????? ??'???? ? ???????? true, ???? ?? " -"??????? ??????????? ??????????????, ????? ????????? ????? ?????, ??? ?? ??? " +"??????? \"?????????? ?????????????\", ????? ????????? ????? ?????, ??? ?? ??? " "????????? ????? ???????. ??????? ?????????? ?????? ????????? ??????? ???? ?? " "???????? ? ???? ???????????, ????? ?? ??????????? ??????????? ???? ??????? " "?????????, ? ??????? ???? ????????? ?? ??????? ??????????? ?????? ? " @@ -39490,21 +39490,21 @@ msgstr "????????? ?????????????, ???? ?? ????? msgid "" "T*T****** for Point/Line, Point/Area, and Line/Area situations" msgstr "" -"T*T****** ??? ???????? ??????/??????, ??????/?????? ?? " -"??????/??????" +"T*T****** ??? ???????? \"?????/?????\", \"?????/?????\" ?? " +"\"?????/?????\"" #. Tag: para #, no-c-format msgid "" "T*****T** for Line/Point, Area/Point, and Area/Line situations" msgstr "" -"T*****T** ??? ???????? ??????/??????, ??????/?????? ?? " -"??????/??????" +"T*****T** ??? ???????? \"?????/?????\", \"?????/?????\" ?? " +"\"?????/?????\"" #. Tag: para #, no-c-format msgid "0******** for Line/Line situations" -msgstr "0******** ??? ???????? ??????/??????" +msgstr "0******** ??? ???????? \"?????/?????\"" #. Tag: para #, no-c-format @@ -39512,8 +39512,8 @@ msgid "" "the result is false for Point/Point and Area/Area " "situations" msgstr "" -"??????????? ? false ??? ???????? ??????/?????? ?? " -"??????/??????" +"??????????? ? false ??? ???????? \"?????/?????\" ?? " +"\"?????/?????\"" #. Tag: para #, no-c-format @@ -39524,9 +39524,9 @@ msgid "" "situations as well. This makes the relation symmetric." msgstr "" "???????????? OpenGIS Simple Features ???????? ??? ???????? ?????? ??? " -"???????? ??????/??????, ??????/??????, ??????/?????? ?? ??????/??????. JTS / " +"???????? \"?????/?????\", \"?????/?????\", \"?????/?????\" ?? \"?????/?????\". JTS / " "GEOS ???????? ??????????, ??? ???? ??????????????? ????? ?? ???????? " -"??????/??????, ??????/?????? ?? ??????/??????. ?? ?????? ?????????? " +"\"?????/?????\", \"?????/?????\" ?? \"?????/?????\". ?? ?????? ?????????? " "???????????." #. Tag: para @@ -39660,8 +39660,8 @@ msgid "" "ST_OrderingEquals is a little more stringent than simply verifying order of " "points are the same)." msgstr "" -"???????? true, ???? ?????? ????????? ? ???????????? " -"????????. ?????????????? ?? ??? ????????? ???????? ?????????, ??? ?=?. " +"???????? true, ???? ?????? ????????? ? \"??????????? " +"???????\". ?????????????? ?? ??? ????????? \"??????\" ?????????, ??? \"=\". " "??????????? ???????? ???????, ?? ????????? ????? ????????? ??????, ? ???? " "?????? ????? ???????? ????????? ???????. ?? ???????, ?? ??????? ?????? ???? " "???? ?????? ? ??????????? ?????? ??????????. ??? ??????????, ?? ??????? " @@ -39971,7 +39971,7 @@ msgid "" "equivalently, neither one covers the other). The overlaps relation is " "symmetric and irreflexive." msgstr "" -"???????? TRUE, ???? ????????? A ? B ??????????? ???????????????. ??? " +"???????? TRUE, ???? ????????? A ? B \"?????????? ??????????????\". ??? " "????????? ??????????????, ???? ???? ????? ????????? ??????, ?? ????????? " "??????? ????????????? ? ????? ??????? ? ????? ? ??? ??? ????????? ???? ????? " "????????? ????? (???, ?? ????????????, ????? ? ??? ?? ???????? ????). " @@ -40074,8 +40074,8 @@ msgid "" "Intersection Model (DE-9IM)." msgstr "" "?? ??????? ?????????? ?????????? ?? ????????? ?????????? (???????????) " -"????????? ??? ????? ???????????, ?? ????????? ? ?????? ? ??????????? ????????? 9-???????? " +"????????? ??? ????? ???????????, ?? ????????? ? ?????? ? ??????????? ????????? 9-???????? " "(DE-9IM)." #. Tag: para @@ -40088,8 +40088,8 @@ msgid "" msgstr "" "DE-9IM ???????????? ?? 9-????????? ???????, ?? ?????? ?????? ????????? ??? " "???????????, ??????? ?? ?????????? ????????? ???? ?????????. ??? " -"????????????? 9-?????????? ????????? ?????? ?? ????????????? ???????? ?F?, " -"?0?, ?1?, ?2? (?????????, ?FF1FF0102?)." +"????????????? 9-?????????? ????????? ?????? ?? ????????????? ???????? 'F', " +"'0', '1', '2' (?????????, ?FF1FF0102?)." #. Tag: para #, no-c-format @@ -40112,8 +40112,8 @@ msgid "" msgstr "" "?????? ??? ??????????? ???????? ????? ??????????, ?????????? ??????? " "???????? ? ???????? ??????? ????????. ??????? ?????? " -"??????? ????????? ??????? ?T? (?? ??????? ???????? ?? ?????????) ?? ?*? (?? " -"??????? ?????-??? ?????????). ???????? ?????????? ????????? ?????????????? " +"??????? ????????? ??????? 'T' (?? ??????? \"??????? ?? ????????\") ?? \"*\" (?? " +"??????? \"????-??? ????????\"). ???????? ?????????? ????????? ?????????????? " "????????? ????????? , , , , , ?? . ???????????? ?????? " "??????? ???????? ?????????? ?????? ???? ????????, ???????????? ???? ?? ???? " "????. ?? ????? ???????? ?????????? ?????????? ?????????, ??? ?? ????? " -"?????????? ??????? ??????????? ????????. ?????????, ?????????? ?????????? " -"???????????? ??? ?????? DE-9IM T********, ???? ?? ?????????? " +"?????????? ??????? ??????????? ????????. ?????????, ?????????? \"????????? " +"???????????\" ??? ?????? DE-9IM T********, ???? ?? ?????????? " "?????? ?????????? ??????????." #. Tag: para ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 12 00:45:30 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 08:45:30 -0000 Subject: [PostGIS] #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 In-Reply-To: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> References: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> Message-ID: <062.a4ae82f6994ea429a7cf7e4d7401fcb0@osgeo.org> #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 -----------------------+--------------------------- Reporter: packi | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: 3.6.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by robe): okay there is another issue which I ran into when trying to fix the topogeometry in the hook-after-upgrade-topology.sql. The fix fails on this because of the index in place. The index is: CREATE INDEX ON upgrade_test.feature ( id(tg) ); So since it relies on id which is corrupt, the fixing of the corrupt fails with: {{{ NOTICE: schema "public" already exists, skipping psql:../../topology/test/regress/hooks/hook-after-upgrade-topology.sql:3: ERROR: attribute 3 has wrong type DETAIL: Table has type bigint, but query expects integer. CONTEXT: SQL statement "UPDATE upgrade_test.feature SET tg = ( (tg).topology_id, (tg).layer_id, ((tg).id & 0xFFFFFFFF)::bigint, ((tg).id >> 32)::integer )::topology.topogeometry WHERE ( (tg).id & 0xFFFFFFFF )::bigint <> (tg).id OR ( (tg).id >> 32 )::integer = (tg).type " PL/pgSQL function fixcorrupttopogeometrycolumn(name,name,name) line 23 at EXECUTE }}} So I guess I should revise the script to drop indexes that have anything to do with the topogeometry column before attempting a fix and then readd the indexes. Not sure how common this is for people to do. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 12 01:47:56 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 01:47:56 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-191-gb5b5e5e1a Message-ID: <20251112094757.1B19D16DA53@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via b5b5e5e1a372bf79cae88a3aa2b7be5e1eeb7559 (commit) from 0ed7cb55169c8ded206e39a61e54f5e3d3872326 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b5b5e5e1a372bf79cae88a3aa2b7be5e1eeb7559 Author: Denys Kovshun Date: Wed Nov 12 08:30:04 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 80.3% (4709 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 492c09252..e54d2981d 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-11 14:47+0000\n" +"PO-Revision-Date: 2025-11-12 09:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -40208,6 +40208,10 @@ msgid "" "defined by the OGC SFS standard, and is the default for ST_Relate." msgstr "" +"1: OGC-Mod2 ? ??????? ????? " +"????? ??????????? ? ????? ????, ???? ?? ????????? ???????. ?? ??????? " +"????????? ?????????? OGC SFS ? ? ??????????? ??? ??????? " +"ST_Relate." #. Tag: para #, no-c-format @@ -40215,6 +40219,8 @@ msgid "" "2: Endpoint - all endpoints " "are in the Boundary." msgstr "" +"2: ??????? ????? ? ??? " +"??????? ????? ??????????? ? ????." #. Tag: para #, no-c-format @@ -40224,6 +40230,10 @@ msgid "" "the boundary is all the \"attached\" or \"inner\" endpoints (but not the " "\"unattached/outer\" ones)." msgstr "" +"3: MultivalentEndpoint - " +"??????? ????? ??????????? ? ????, ???? ???? ????????????? ?????? ?????? " +"????. ?????? ???????, ???? - ?? ??? ??????????? ??? ??????????? ??????? " +"????? (??? ?? ????????????/?????????)." #. Tag: para #, no-c-format @@ -40232,21 +40242,28 @@ msgid "" "endpoints are in the Boundary if they occur only once. In other words, the " "boundary is all the \"unattached\" or \"outer\" endpoints." msgstr "" +"4: MonovalentEndpoint - " +"??????? ????? ??????????? ? ????, ???? ???? ????????????? ?????? ???? ???. " +"?????? ???????, ???? - ?? ??? ????????????? ??? ?????????? ??????? ?????." #. Tag: para #, no-c-format msgid "This function is not in the OGC spec, but is implied. see s2.1.13.2" msgstr "" +"?? ??????? ?? ??????? ?? ???????????? OGC, ??? ? ???????????. ???. s2.1.13.2" #. Tag: para #, no-c-format msgid "Enhanced: 2.0.0 - added support for specifying boundary node rule." msgstr "" +"?????????: 2.0.0 ? ?????? ????????? ??? ?????????? ??????? ?????????? ?????." #. Tag: para #, no-c-format msgid "Using the boolean-valued function to test spatial relationships." msgstr "" +"???????????? ??????? ? ??????? ????????? ??? ????????? ??????????? " +"????????'?????." #. Tag: para #, no-c-format @@ -40254,11 +40271,14 @@ msgid "" "Testing a custom spatial relationship pattern as a query condition, with " "&& to enable using a spatial index." msgstr "" +"?????????? ???????? ??????? ??????????? ???????? ?? ????? ?????? ?? " +"????????? && ??? ???????????? ???????????? ???????????? " +"???????." #. Tag: para #, no-c-format msgid "Computing the intersection matrix for spatial relationships." -msgstr "" +msgstr "?????????? ??????? ???????? ??? ??????????? ????????." #. Tag: para #, no-c-format @@ -40267,6 +40287,9 @@ msgid "" "between a LineString and a MultiLineString with a duplicate endpoint " "(3 3):" msgstr "" +"???????????? ?????? ?????? ????????? ?????? ??? ?????????? ??????????? " +"???????? ??? LineString ? MultiLineString ? ????????? ???????? ?????? (" +"3 3):" #. Tag: para #, no-c-format @@ -40276,6 +40299,10 @@ msgid "" "MultiLineString, so the DE-9IM matrix entry [aB:bI] is 0 and " "[aB:bB] is F." msgstr "" +"?????????????? ??????? OGC-Mod2 (1), " +"?????????? ??????? ????? ??????????? ? ????????? MultiLineString, ???? ????? ??????? DE-9IM [aB:bI] ???????? " +"0, ? [aB:bB] ???????? F." #. Tag: para #, no-c-format @@ -40285,6 +40312,10 @@ msgid "" "MultiLineString, so the DE-9IM matrix entry [aB:bI] is F and " "[aB:bB] is 0." msgstr "" +"?????????????? ??????? Endpoint (2), " +"?????????? ??????? ????? ??????????? ? ???? MultiLineString, ???? ????? ??????? DE-9IM [aB:bI] ???????? " +"F, ? [aB:bB] ???????? 0." #. Tag: para #, no-c-format @@ -40296,12 +40327,19 @@ msgid "" "linkend=\"ST_Intersects\"/>, , , " msgstr "" +", , , , , , , , , , , , " #. Tag: refpurpose #, no-c-format msgid "" "Tests if a DE-9IM Intersection Matrix matches an Intersection Matrix pattern" msgstr "" +"?????????, ?? ?????????? ??????? ???????? DE-9IM ??????? ??????? ????????" #. Tag: para #, no-c-format @@ -40312,6 +40350,11 @@ msgid "" "intersectionMatrixPattern. Intersection matrix values can " "be computed by ." msgstr "" +"?????????, ?? ???????? intersectionMatrix ?????? Dimensionally Extended 9-" +"Intersection Model (DE-9IM) ?????????? " +"intersectionMatrixPattern. ???????? ??????? ???????? " +"????? ????????? ?? ????????? ." #. Tag: para #, no-c-format @@ -40319,11 +40362,13 @@ msgid "" "Patterns for common spatial relationships matched against intersection " "matrix values, for a line in various positions relative to a polygon" msgstr "" +"??????? ??? ????????? ??????????? ????????, ?? ???????????? ????????? " +"??????? ????????, ??? ????? ? ?????? ?????????? ???????? ?????????????" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format @@ -40331,6 +40376,8 @@ msgid "" "Tests if two geometries have at least one point in common, but their " "interiors do not intersect" msgstr "" +"?????????, ?? ????? ??? ????????? ???? ? ???? ??????? ?????, ??? ???? " +"????????? ??????? ?? ?????????????" #. Tag: para #, no-c-format @@ -40341,6 +40388,11 @@ msgid "" "relationship is always FALSE, since points do not have a " "boundary." msgstr "" +"???????? TRUE, ???? A ? B ?????????????, ??? ?? ????????? " +"??????? ?? ?????????????. ?????? ???????, A ? B ????? ????????? ???? ??????? " +"?????, ? ??????? ????? ?????? ????????? ?? ????? ????. ??? ??????? ????? " +"Point/Point ?????????? ?????? ? FALSE, ???????? ????? ?? " +"????? ???." #. Tag: para #, no-c-format @@ -40348,6 +40400,8 @@ msgid "" "In mathematical terms: ST_Touches(A, B) ? (Int(A) ? Int(B) = ?) ? " "(A ? B ? ?) " msgstr "" +"? ???????????? ????????: ST_Touches(A, B) ? (Int(A) ? Int(B) = ?) ?" +" (A ? B ? ?) " #. Tag: para #, no-c-format @@ -40355,21 +40409,23 @@ msgid "" "This relationship holds if the DE-9IM Intersection Matrix for the two " "geometries matches one of:" msgstr "" +"?? ?????????? ????????????, ???? ??????? ???????? DE-9IM ??? ???? ????????? " +"?????????? ????? ? ?????????:" #. Tag: markup #, no-c-format msgid "FT*******" -msgstr "" +msgstr "FT*******" #. Tag: markup #, no-c-format msgid "F**T*****" -msgstr "" +msgstr "F**T*****" #. Tag: markup #, no-c-format msgid "F***T****" -msgstr "" +msgstr "F***T****" #. Tag: para #, no-c-format @@ -40377,11 +40433,13 @@ msgid "" "&index_aware; To avoid using an index, use _ST_Touches " "instead." msgstr "" +"&index_aware; ??? ???????? ???????????? ???????, ??????? ????? " +"?????????????? _ST_Touches." #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.28" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.28" #. Tag: para #, no-c-format @@ -40389,6 +40447,8 @@ msgid "" "The ST_Touches predicate returns TRUE in the following examples." msgstr "" +"???????? ST_Touches ???????? TRUE ? " +"????????? ????? ?????????." #. Tag: refpurpose #, no-c-format @@ -40396,6 +40456,8 @@ msgid "" "Tests if every point of A lies in B, and their interiors have a point in " "common" msgstr "" +"?????????, ?? ????? ????? A ?????? ? B, ? ?? ????? ???? ????????? ??????? " +"??????? ?????" #. Tag: para #, no-c-format @@ -40405,6 +40467,11 @@ msgid "" "equivalently, no points of A lie in the exterior of B), and the interiors of " "A and B have at least one point in common." msgstr "" +"???????? TRUE, ???? ????????? A ??????????? ????????? ????????? B. A " +"??????????? ????????? B ???? ? ?????? ????, ???? ??? ????? A ?????? " +"????????? (????? ? ???????? ??? ?? ????) B (???, ?? ????????????, ????? " +"????? A ?? ?????? ???? ?????? B), ? ????????? ??????? A ? B ????? ????????? " +"???? ??????? ?????." #. Tag: para #, no-c-format @@ -40412,6 +40479,8 @@ msgid "" "For this function to make sense, the source geometries must both be of the " "same coordinate projection, having the same SRID." msgstr "" +"??? ?? ??????? ???? ????, ????????? ?????? ??????? ???? ???????? ???????? " +"????????? ?? ????????? SRID." #. Tag: para #, no-c-format @@ -40419,6 +40488,8 @@ msgid "" "In mathematical terms: ST_Within(A, B) ? (A ? B = A) ? (Int(A) ? " "Int(B) ? ?) " msgstr "" +"? ???????????? ????????: ST_Within(A, B) ? (A ? B = A) ? (Int(A) ? " +"Int(B) ? ?) " #. Tag: para #, no-c-format @@ -40428,6 +40499,10 @@ msgid "" "ST_Within(B,A) = true, then the two geometries must be " "topologically equal (ST_Equals(A,B) = true)." msgstr "" +"????????? ?????????? ? ????????????: ????? ????????? ??????????? ????????? " +"????. ?????????? ? ???????????????: ???? ST_Within(A,B) = true " +"? ST_Within(B,A) = true, ?? ??? ????????? ??????? ???? " +"??????????? ??????? (ST_Equals(A,B) = true)." #. Tag: para #, no-c-format @@ -40435,6 +40510,8 @@ msgid "" "ST_Within is the converse of . So, " "ST_Within(A,B) = ST_Contains(B,A)." msgstr "" +"ST_Within ? ????????? ?? . ????, " +"ST_Within(A,B) = ST_Contains(B,A)." #. Tag: para #, no-c-format @@ -40447,6 +40524,13 @@ msgid "" "link>. The predicate provides a more " "inclusive relationship." msgstr "" +"???????? ????????? ??????? ??????? ???? ??????? ?????, ???????? ?????????? " +"??????? ? ????, ?? ????? ?? ?????, ??? ???????? ?????? ?? ???? ????????? ??? " +"?????, ?? ??????? ?? ?????????. ??? ????????? " +"?????????? ?????????? ???. ??????? OGC " +"Covers, Contains, Within. ???????? " +"?????????? ????? ????????? ??????????." #. Tag: para #, no-c-format @@ -40454,16 +40538,18 @@ msgid "" "&index_aware; To avoid index use, use the function _ST_Within." msgstr "" +"&index_aware; ??? ???????? ???????????? ???????, ?????????????? ??????? " +"_ST_Within." #. Tag: para #, no-c-format msgid "&sfs_compliant; s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*F**F***')" -msgstr "" +msgstr "&sfs_compliant; s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*F**F***')" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.30" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.30" #. Tag: para #, no-c-format @@ -40471,16 +40557,18 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: title #, no-c-format msgid "Distance Relationships" -msgstr "" +msgstr "?????????? ?????????" #. Tag: refpurpose #, no-c-format msgid "Tests if two 3D geometries are within a given 3D distance" -msgstr "" +msgstr "?????????, ?? ??? 3D-????????? ??????????? ? ????? ??????? 3D-????????" #. Tag: para #, no-c-format @@ -40491,11 +40579,16 @@ msgid "" "function to make sense the source geometries must be in the same coordinate " "system (have the same SRID)." msgstr "" +"???????? ???????? true, ???? 3D-???????? ??? ????? ????????????? ?????????? " +"?? ????????? ???????? distance_of_srid. ???????? " +"?????????? ? ????????, ?????????? ??????????? ???????? ????????? ?????????. " +"??? ?? ??????? ???? ????, ??????? ????????? ??????? ???? ? ????? ??????? " +"????????? (???? ????????? SRID)." #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM ?" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM ?" #. Tag: para #, no-c-format @@ -40504,11 +40597,16 @@ msgid "" "linkend=\"ST_3DDistance\"/>, , , " msgstr "" +", , , , , , " #. Tag: refpurpose #, no-c-format msgid "Tests if two 3D geometries are entirely within a given 3D distance" msgstr "" +"?????????, ?? ??? 3D-????????? ???????? ??????????? ? ????? ??????? " +"3D-????????" #. Tag: para #, no-c-format @@ -40519,6 +40617,10 @@ msgid "" "source geometries must both be of the same coordinate projection, having the " "same SRID." msgstr "" +"???????? ???????? true, ???? 3D-????????? ???????? ??????????? ?? ??????? " +"???????? ???? ??? ?????. ???????? ????????? ? ????????, ?????????? " +"??????????? ???????? ????????? ?????????. ??? ?? ??????? ???? ????, ??????? " +"????????? ??????? ???? ???????? ???????? ????????? ? ????????? SRID." #. Tag: para #, no-c-format @@ -40526,11 +40628,13 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format msgid "Tests if a geometry is entirely inside a distance of another" -msgstr "" +msgstr "?????????, ?? ????????? ???????? ??????????? ? ????? ???????? ??? ?????" #. Tag: para #, no-c-format @@ -40541,6 +40645,11 @@ msgid "" "distance is specified in units defined by the spatial reference system of " "the geometries." msgstr "" +"???????? ???????? true, ???? g2 ???????? ??????????? ? ????? " +"distance ??? g1. ????????? ????? ? ????????, ???? " +"g2 ??????????? ? ????? ?????? distance ??? " +"g1. ???????? ?????????? ? ????????, ?????????? ??????????? " +"???????? ????????? ?????????." #. Tag: para #, no-c-format @@ -40550,6 +40659,9 @@ msgid "" "Results will differ from prior versions, but should be closer to user " "expectations." msgstr "" +"???????: 3.5.0: ?????? ??????? ????? ???????????? ????????? ?????? ? ??????, " +"? ?? ???????? ST_MaxDistance. ?????????? ?????? ???????????? ??? ?????????? " +"??????, ??? ??????? ???? ???????? ?? ????????? ????????????." #. Tag: para #, no-c-format @@ -40557,16 +40669,20 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format msgid "Tests if two geometries are within a given distance" msgstr "" +"?????????, ?? ??? ????????? ??????????? ?? ??????? ???????? ???? ??? ?????" #. Tag: para #, no-c-format msgid "Returns true if the geometries are within a given distance" msgstr "" +"???????? ???????? true, ???? ????????? ??????????? ? ????? ??????? ????????" #. Tag: para #, no-c-format @@ -40576,6 +40692,9 @@ msgid "" "the source geometries must be in the same coordinate system (have the same " "SRID)." msgstr "" +"??? geometry: ???????? ?????????? ? ????????, ?????????? " +"??????????? ???????? ????????? ?????????. ??? ?? ??????? ???? ????, ??????? " +"????????? ??????? ???? ? ????? ??????? ????????? (???? ????????? SRID)." #. Tag: para #, no-c-format @@ -40584,11 +40703,15 @@ msgid "" "defaults to use_spheroid = true. For faster evaluation " "use use_spheroid = false to measure on the sphere." msgstr "" +"??? geography: ??????? ?????? ? ??????, ? ??????????? ???????? " +"?? ????????????? ??????????? ?? ????????? use_spheroid = true. ??? ??????????? ????????? ?????????????? use_spheroid = " +"false ??? ??????????? ?? ?????." #. Tag: para #, no-c-format msgid "Use for 3D geometries." -msgstr "" +msgstr "??? 3D-????????? ?????????????? ." #. Tag: para #, no-c-format @@ -40596,16 +40719,18 @@ msgid "" "This function call includes a bounding box comparison that makes use of any " "indexes that are available on the geometries." msgstr "" +"??? ?????? ??????? ??????? ?????????? ????????????? ?????, ??? ???????????? " +"????-??? ???????, ???????? ??? ?????????." #. Tag: para #, no-c-format msgid "Availability: 1.5.0 support for geography was introduced" -msgstr "" +msgstr "???????????: 1.5.0 ???? ??????????? ????????? ?????????" #. Tag: para #, no-c-format msgid "Enhanced: 2.1.0 support for curved geometries was introduced." -msgstr "" +msgstr "?????????: 2.1.0 ?????? ????????? ?????? ?????????." #. Tag: para #, no-c-format @@ -40615,17 +40740,23 @@ msgid "" "function used that logic. From 1.3.4, ST_DWithin uses a faster short-circuit " "distance function." msgstr "" +"?? ?????? 1.3 ??????? ???????? " +"????????????????? ????? ? && ?? ST_Distance ??? ????????? ????????, " +"? ?? ?????? 1.3.4 ?? ??????? ??????????????? ???? ??????. ????????? ? ?????? " +"1.3.4, ST_DWithin ???????????? ?????? ??????? ????????? ????????? ????????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "" "Tests if a point geometry is inside a circle defined by a center and radius" msgstr "" +"?????????, ?? ????????? ????? ??????????? ????????? ????, ??????????? " +"??????? ? ????????" #. Tag: para #, no-c-format @@ -40634,12 +40765,17 @@ msgid "" "center_x,center_y and radius " "radius." msgstr "" +"???????? ???????? true, ???? ????????? ? ?????? ? ??????????? ????????? ???? " +"? ??????? center_x,center_y ? ???????? " +"radius." #. Tag: para #, no-c-format msgid "" "Does not use spatial indexes. Use instead." msgstr "" +"?? ???????????? ?????????? ???????. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -40820,6 +40956,8 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: refpurpose #, no-c-format @@ -40827,11 +40965,13 @@ msgid "" "Computes the volume of a 3D solid. If applied to surface (even closed) " "geometries will return 0." msgstr "" +"???????? ??'?? 3D-????. ???? ?????????????? ?? ??????????? (?????? ????????) " +"?????????, ???????? 0." #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM IEC 13249-3: 9.1 (same as CG_3DVolume)" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM IEC 13249-3: 9.1 (same as CG_3DVolume)" #. Tag: para #, no-c-format @@ -40841,21 +40981,29 @@ msgid "" "linkend=\"CG_MakeSolid\"/>. Areal geometries have no volume. Here is an " "example to demonstrate." msgstr "" +"???? ??????? ???????? ??????????? ?? ????????? WKT, ???? ????????????? ?? " +"?????, ? ?? ?? ?????? ????. ??? ??????? ?? ????????, ???????? " +"??????????????? . ????? ?? ????? ??'???. ??? " +"??????? ??? ??????????." #. Tag: para #, no-c-format msgid ", , " -msgstr "" +msgstr ", , " #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -40863,17 +41011,23 @@ msgid "" "Availability: 2.2.0: This was documented in 2.1.0 but got accidentally left " "out in 2.1 release." msgstr "" +"???????????: 2.2.0: ?? ???? ??????????????? ? 2.1.0, ??? ????????? ????????? " +"? ??????? 2.1." #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -40885,6 +41039,8 @@ msgstr "" #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -40892,16 +41048,20 @@ msgid "" ", , , " msgstr "" +", , , " #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM IEC 13249-3: 9.1 (same as ST_3DVolume)" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM IEC 13249-3: 9.1 (????? ?????, ?? ST_3DVolume)" #. Tag: para #, no-c-format @@ -40911,31 +41071,35 @@ msgid "" "linkend=\"ST_MakeSolid\"/>. Areal geometries have no volume. Here is an " "example to demonstrate." msgstr "" +"???? ??????? ???????? ??????????? ?? ????????? WKT, ???? ????????????? ?? " +"?????, ? ?? ?? ?????? ????. ??? ??????? ?? ????????, ???????? " +"??????????????? . ????? ?? ????? ??'???. ??? " +"??????? ??? ??????????." #. Tag: para #, no-c-format msgid ", , " -msgstr "" +msgstr ", , " #. Tag: title #, no-c-format msgid "SFCGAL Processing and Relationship Functions" -msgstr "" +msgstr "??????? ??????? ?? ????????'????? SFCGAL" #. Tag: refpurpose #, no-c-format msgid "Computes the intersection of two geometries" -msgstr "" +msgstr "???????? ??????? ???? ?????????" #. Tag: para #, no-c-format msgid "Computes the intersection of two geometries." -msgstr "" +msgstr "???????? ??????? ???? ?????????." #. Tag: para #, no-c-format msgid "NOTE: this function returns a geometry representing the intersection." -msgstr "" +msgstr "????????: ?? ??????? ???????? ?????????, ?? ??????????? ???????." #. Tag: para #, no-c-format @@ -40943,11 +41107,13 @@ msgid "" ", , , " "" msgstr "" +", , , " +"" #. Tag: refpurpose #, no-c-format msgid "Tests if two 3D geometries intersect" -msgstr "" +msgstr "?????????, ?? ????????????? ??? 3D-?????????" #. Tag: para #, no-c-format @@ -40955,11 +41121,13 @@ msgid "" "Tests if two 3D geometries intersect. 3D geometries intersect if they have " "any point in common in the three-dimensional space." msgstr "" +"?????????, ?? ????????????? ??? 3D-?????????. 3D-????????? ?????????????, " +"???? ???? ????? ??????? ????? ? ???????????? ????????." #. Tag: refpurpose #, no-c-format msgid "Computes the geometric difference between two geometries" -msgstr "" +msgstr "???????? ??????????? ??????? ??? ????? ???????????" #. Tag: para #, no-c-format @@ -40967,32 +41135,36 @@ msgid "" "Computes the geometric difference between two geometries. The resulting " "geometry is a set of points that are present in geomA but not in geomB." msgstr "" +"???????? ??????????? ??????? ??? ????? ???????????. ??????????? ????????? ? " +"??????? ?????, ??? ???????? ? geomA, ??? ???????? ? geomB." #. Tag: para #, no-c-format msgid "NOTE: this function returns a geometry." -msgstr "" +msgstr "????????: ?? ??????? ???????? ?????????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Perform 3D difference" -msgstr "" +msgstr "???????? 3D-???????" #. Tag: para #, no-c-format msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "Returns that part of geom1 that is not part of geom2." -msgstr "" +msgstr "???????? ?? ??????? geom1, ??? ?? ??????? ?? geom2." #. Tag: para #, no-c-format @@ -41001,17 +41173,21 @@ msgid "" "rendering in HTML using X3Dom HTML " "Javascript rendering library." msgstr "" +"3D-?????????? ???? ???????? ?? ????????? PostGIS ? ?????????? ? HTML ?? ????????? ?????????? ??????????? X3Dom HTML Javascript." #. Tag: para #, no-c-format msgid "" "Original 3D geometries overlaid. geom2 is the part that will be removed." msgstr "" +"????????? ??????????? 3D-?????????. geom2 ? ?? ???????, ??? ???? ????????." #. Tag: para #, no-c-format msgid "What's left after removing geom2" -msgstr "" +msgstr "?? ??????????? ????? ????????? geom2" #. Tag: para #, no-c-format @@ -41019,16 +41195,18 @@ msgid "" ", , " msgstr "" +", , " #. Tag: refpurpose #, no-c-format msgid "Computes the minimum distance between two geometries" -msgstr "" +msgstr "???????? ?????????? ???????? ??? ????? ???????????" #. Tag: para #, no-c-format msgid "Computes the minimum distance between two geometries." -msgstr "" +msgstr "???????? ?????????? ???????? ??? ????? ???????????." #. Tag: para #, no-c-format @@ -41036,21 +41214,23 @@ msgid "" "NOTE: this function returns a double precision value representing the " "distance." msgstr "" +"????????: ?? ??????? ???????? ???????? ????????? ????????, ?? ??????????? " +"????????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Computes the minimum 3D distance between two geometries" -msgstr "" +msgstr "???????? ?????????? 3D ???????? ??? ????? ???????????" #. Tag: para #, no-c-format msgid "Computes the minimum 3D distance between two geometries." -msgstr "" +msgstr "???????? ?????????? 3D ???????? ??? ????? ???????????." #. Tag: para #, no-c-format @@ -41058,68 +41238,74 @@ msgid "" "NOTE: this function returns a double precision value representing the 3D " "distance." msgstr "" +"????????: ?? ??????? ???????? ???????? ????????? ????????, ?? ??????????? " +"3D-????????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Computes the 3D convex hull of a geometry." -msgstr "" +msgstr "???????? 3D ?????? ???????? ?????????." #. Tag: para #, no-c-format msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "Original geometry overlaid with 3D convex hull" -msgstr "" +msgstr "??????????? ?????????, ????????? ?? 3D ?????? ????????" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Perform 3D intersection" -msgstr "" +msgstr "???????? 3D ???????" #. Tag: para #, no-c-format msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "Return a geometry that is the shared portion between geom1 and geom2." -msgstr "" +msgstr "????????? ?????????, ??? ? ???????? ???????? ??? geom1 ? geom2." #. Tag: para #, no-c-format msgid "Original 3D geometries overlaid. geom2 is shown semi-transparent" -msgstr "" +msgstr "????????? ??????????? 3D-?????????. geom2 ???????? ?????????????" #. Tag: para #, no-c-format msgid "Intersection of geom1 and geom2" -msgstr "" +msgstr "??????? geom1 ? geom2" #. Tag: para #, no-c-format msgid "3D linestrings and polygons" -msgstr "" +msgstr "3D ??????? ???????? ?? ?????????????" #. Tag: para #, no-c-format msgid "Cube (closed Polyhedral Surface) and Polygon Z" -msgstr "" +msgstr "??? (??????? ???????????? ????????) ? ???????????? Z" #. Tag: para #, no-c-format @@ -41127,36 +41313,40 @@ msgid "" "Intersection of 2 solids that result in volumetric intersection is also a " "solid (ST_Dimension returns 3)" msgstr "" +"??????? ???? ??????? ???, ?? ?????????? ?? ??'?????? ????????, ????? ? " +"??????? ????? (ST_Dimension ???????? 3)" #. Tag: refpurpose #, no-c-format msgid "Computes the union of two geometries" -msgstr "" +msgstr "???????? ??'??????? ???? ?????????" #. Tag: para #, no-c-format msgid "Computes the union of two geometries." -msgstr "" +msgstr "???????? ??'??????? ???? ?????????." #. Tag: para #, no-c-format msgid "NOTE: this function returns a geometry representing the union." -msgstr "" +msgstr "????????: ?? ??????? ???????? ?????????, ?? ??????????? ??'???????." #. Tag: refpurpose #, no-c-format msgid "Perform 3D union." -msgstr "" +msgstr "????????? ??'??????? 3D." #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "Availability: 3.3.0 aggregate variant was added" -msgstr "" +msgstr "???????????: ?????? ??????????? ??????? 3.3.0" #. Tag: para #, no-c-format @@ -41167,11 +41357,16 @@ msgid "" "it operates on rows of data, in the same way the SUM() and AVG() functions " "do and like most aggregates, it also ignores NULL geometries." msgstr "" +"?????????? ???????: ???????? ?????????, " +"??? ? 3D ??'???????? ?????? ?????? ?????????. ??????? ST_3DUnion() ? " +"???????????? ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " +"??????? ????? ??? ????, ?? ??????? SUM() ? AVG(), ?, ?? ? ????????? " +"?????????, ??????? ????????? NULL." #. Tag: refpurpose #, no-c-format msgid "Perform 3D union using postgis_sfcgal." -msgstr "" +msgstr "????????? ??'??????? 3D ?? ????????? postgis_sfcgal." #. Tag: para #, no-c-format @@ -41182,16 +41377,21 @@ msgid "" "it operates on rows of data, in the same way the SUM() and AVG() functions " "do and like most aggregates, it also ignores NULL geometries." msgstr "" +"?????????? ???????: ???????? ?????????, " +"??? ? 3D ??'???????? ?????? ?????? ?????????. ??????? CG_3DUnion() ? " +"???????????? ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " +"??????? ????? ??? ????, ?? ??????? SUM() ? AVG(), ?, ?? ? ????????? " +"?????????, ??????? ????????? NULL." #. Tag: para #, no-c-format msgid "Original 3D geometries overlaid. geom2 is the one with transparency." -msgstr "" +msgstr "????????? ??????????? 3D-?????????. geom2 ? ?? ??, ?? ??? ??????????." #. Tag: para #, no-c-format msgid "Union of geom1 and geom2" -msgstr "" +msgstr "??'??????? geom1 ? geom2" #. Tag: para #, no-c-format @@ -41199,17 +41399,21 @@ msgid "" ", , " msgstr "" +", , " #. Tag: refpurpose #, no-c-format msgid "Computes an Alpha-shape enclosing a geometry" -msgstr "" +msgstr "???????? ?????-?????, ?? ??????? ?????????" #. Tag: para #, no-c-format msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -41221,6 +41425,12 @@ msgid "" "shape provides a closer fit to the shape of the input than the shape " "produced by the convex hull." msgstr "" +"???????? ?????-????? ????? ? ?????????. ?????-????? ? ?? " +"(????????) ???????? ??????????? ?????????, ??? ??????? ??? ??????? ??????? " +"????? ? ??????? ???? ? ??????????? ?????? ??????? ?????. ?????-????? " +"?????????? ????? ????? ?????????? ?? ????? ??????? ?????, ??? ?????, " +"???????? ??????? ?????????." #. Tag: para #, no-c-format @@ -41230,6 +41440,10 @@ msgid "" "produce more concave results. Alpha values greater than some data-dependent " "value produce the convex hull of the input." msgstr "" +"???????? ??????????? ????????????? ?????????? alpha, ???? " +"???? ???? ???????? ??? 0 ?? ??????????????. ????? ???????? ????? ????? ????? " +"???????? ??????????. ???????? ?????, ?????? ?? ????? ????????, ?? ???????? " +"??? ?????, ????? ?????? ???????? ??????? ?????." #. Tag: para #, no-c-format @@ -41242,6 +41456,13 @@ msgid "" "information. This is different from the original definition of alpha-shapes, " "which defines alpha as the radius of the eroding disc." msgstr "" +"????? ???????????? CGAL ???????? ????? ? ????????? " +"??????? ?????, ?? ???????????????? ? ????????? Alpha-Shape ??? ???????? " +"???????????? ?????? ??????? ?????. ?????????? ?????????? ???. ? CGAL Alpha-Shapes. ?? ????????????? ??? " +"????????????? ?????????? ?????-????, ??? ???????? ????? ?? ?????? ?????????? " +"?????." #. Tag: para #, no-c-format @@ -41249,6 +41470,8 @@ msgid "" "The computed shape does not contain holes unless the optional " "allow_holes argument is specified as true." msgstr "" +"????????? ????? ?? ??????? ???????, ???? ???????????? ???????? " +"allow_holes ?? ???????? ?? true." #. Tag: para #, no-c-format @@ -41257,11 +41480,13 @@ msgid "" "way to , but uses CGAL and a different " "algorithm." msgstr "" +"?? ??????? ????????? ???????? ???????? ???????? ????????? ??????? ?? , ??? ???????????? CGAL ?? ????? ????????." #. Tag: para #, no-c-format msgid "Availability: 3.5.0 - requires SFCGAL >= 1.4.1." -msgstr "" +msgstr "???????????: 3.5.0 ? ??????? SFCGAL >= 1.4.1." #. Tag: para #, no-c-format @@ -41269,6 +41494,8 @@ msgid "" "Alpha-shape of a MultiPoint (same example As )" msgstr "" +"?????-????? MultiPoint (??? ????? ???????, ?? ? )" #. Tag: para #, no-c-format @@ -41276,6 +41503,8 @@ msgid "" "Alpha-shape of a MultiPoint, allowing holes (same example as )" msgstr "" +"?????-????? MultiPoint, ?? ???????? ?????? (??? ????? ???????, ?? ? )" #. Tag: para #, no-c-format @@ -41283,16 +41512,18 @@ msgid "" "Alpha-shape of a MultiPoint, allowing holes (same example as )" msgstr "" +"?????-????? MultiPoint, ?? ???????? ?????? (??? ????? ???????, ?? ? )" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "Computes approximal convex partition of the polygon geometry" -msgstr "" +msgstr "???????? ????????? ?????? ???????? ????????? ?????????????" #. Tag: para #, no-c-format @@ -41300,6 +41531,8 @@ msgid "" "Computes approximal convex partition of the polygon geometry (using a " "triangulation)." msgstr "" +"???????? ????????? ?????? ???????? ????????? ???????? (?? ????????? " +"????????????)." #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 351 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 292 insertions(+), 59 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 12 02:02:26 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 02:02:26 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-192-gadab06318 Message-ID: <20251112100226.DC0EC16EBD1@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via adab06318f508c7f0fb8ddd53db4081fdf398a07 (commit) from b5b5e5e1a372bf79cae88a3aa2b7be5e1eeb7559 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit adab06318f508c7f0fb8ddd53db4081fdf398a07 Author: Denys Kovshun Date: Wed Nov 12 09:53:09 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 80.7% (4732 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index e54d2981d..26c37802d 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-12 09:47+0000\n" +"PO-Revision-Date: 2025-11-12 10:02+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -40780,17 +40780,18 @@ msgstr "" #. Tag: para #, no-c-format msgid "Availability: 1.2" -msgstr "" +msgstr "???????????: 1.2" #. Tag: para #, no-c-format msgid "Changed: 2.2.0 In prior versions this was called ST_Point_Inside_Circle" msgstr "" +"???????: 2.2.0 ? ?????????? ??????? ?? ?????????? ST_Point_Inside_Circle" #. Tag: title #, no-c-format msgid "SFCGAL Functions Reference" -msgstr "" +msgstr "???????? ??????? SFCGAL" #. Tag: para #, no-c-format @@ -40799,6 +40800,9 @@ msgid "" "spatial functions. For robustness, geometry coordinates have an exact " "rational number representation." msgstr "" +"SFCGAL ? ?? ??????????-???????? C++ ??????? CGAL, ??? ????? ????????? 2D- ?? " +"3D-?????????? ???????. ??? ?????????? ?????????? ????????? ????? ????? " +"??????????? ??????? ?????????????." #. Tag: para #, no-c-format @@ -41550,16 +41554,27 @@ msgid "" "Though the triangulation-based approximation algorithm often results in " "fewer convex pieces, this is not always the case." msgstr "" +"???????? ????????????? P ? ?? ????? ?????????, ????????? ??????? ???? ?? " +"?????????????, ? ??'??????? ????????? ???????? ?????????? ??????? ????????? " +"???????? P. ??????? CG_ApproxConvexPartition ? " +"CG_GreeneApproxConvexPartition ????????? ????????? ?????????? ?????? " +"????????. ?????? ?? ??????? ????????? ?????? ????????, ???????? ?????????? " +"??????? ?? ???????? ????????. CG_ApproxConvexPartition ???????????? " +"????????????, ? CG_GreeneApproxConvexPartition ? ?????????? ?????. ?????? ?? " +"??????? ??????????, ?? ???? ????????? ?? ?????? ??? ? ?????? ???? ?????? " +"??????? ??????, ??? ?????????? ?????????, ??? ???? ????????????? ?? " +"?????????? ?????????. ???? ???????? ?????????? ?? ?????? ???????????? ????? " +"??? ????? ??????? ??????, ?? ?? ?????? ???." #. Tag: para #, no-c-format msgid "Availability: 3.5.0 - requires SFCGAL >= 1.5.0." -msgstr "" +msgstr "???????????: 3.5.0 ? ??????? SFCGAL >= 1.5.0." #. Tag: para #, no-c-format msgid "Requires SFCGAL >= 1.5.0" -msgstr "" +msgstr "??????? SFCGAL >= 1.5.0" #. Tag: para #, no-c-format @@ -41569,6 +41584,9 @@ msgid "" "linkend=\"CG_GreeneApproxConvexPartition\"/> and )" msgstr "" +"????????? ?????? ?????????? (??? ????? ???????, ?? ? , ?? )" #. Tag: para #, no-c-format @@ -41576,11 +41594,13 @@ msgid "" ", , " msgstr "" +", , " #. Tag: refpurpose #, no-c-format msgid "Compute the approximate medial axis of an areal geometry." -msgstr "" +msgstr "????????? ????????? ????????? ???? ??????? ?????????." #. Tag: para #, no-c-format @@ -41588,6 +41608,8 @@ msgid "" "is deprecated as of 3.5.0. Use " "instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -41597,22 +41619,27 @@ msgid "" "(1.2.0+). Otherwise the function is just a wrapper around " "CG_StraightSkeleton (slower case)." msgstr "" +"???????? ????????? ????????? ???? ??? ???????? ????? ?? ?????? ?? ??????? " +"???????. ???????????? ??????????? API SFCGAL, ???? ??????????? ?? ?????? " +"???????? ?????? (1.2.0+). ? ?????? ??????? ??????? ? ???? ????????? ??????? " +"CG_StraightSkeleton (??????????? ???????)." #. Tag: para #, no-c-format msgid "A polygon and its approximate medial axis" -msgstr "" +msgstr "??????? ? ???? ????????? ????????? ????" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "" "Return a constrained Delaunay triangulation around the given input geometry." msgstr "" +"????????? ???????? ???????????? ?????? ??????? ??????? ??????? ?????????." #. Tag: para #, no-c-format @@ -41620,6 +41647,8 @@ msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -41628,16 +41657,19 @@ msgid "" "Constrained_Delaunay_triangulation\">Constrained Delaunay triangulation around the vertices of the input geometry. Output is a TIN." msgstr "" +"???????? ???????? ???????????? ?????? " +"??????? ?????? ??????? ?????????. ????????? ?????? ? TIN." #. Tag: para #, no-c-format msgid "CG_ConstrainedDelaunayTriangles of 2 polygons" -msgstr "" +msgstr "CG_???????? ?????????? ?????? ? 2 ?????????" #. Tag: para #, no-c-format msgid "of 2 polygons. Triangle edges cross polygon boundaries." -msgstr "" +msgstr "2 ?????????. ???? ?????????? ??????????? ???? ?????????." #. Tag: para #, no-c-format @@ -41645,21 +41677,25 @@ msgid "" ", , , , " msgstr "" +", , , , " #. Tag: refpurpose #, no-c-format msgid "Extrude a surface to a related volume" -msgstr "" +msgstr "???????? ???????? ?? ???????????? ??'???" #. Tag: para #, no-c-format msgid "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format msgid "Original octagon formed from buffering point" -msgstr "" +msgstr "???????????? ????????????, ??????????? ? ????? ???????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 60 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 12 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 12 03:47:48 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 03:47:48 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-193-g315d6b7d2 Message-ID: <20251112114748.DD7A716FAAD@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 315d6b7d248c460ef9d6cdec4520228b9a42ef20 (commit) from adab06318f508c7f0fb8ddd53db4081fdf398a07 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 315d6b7d248c460ef9d6cdec4520228b9a42ef20 Author: Denys Kovshun Date: Wed Nov 12 10:05:57 2025 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 81.1% (4753 of 5857 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 26c37802d..1881aa1a4 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-08-21 03:28+0000\n" -"PO-Revision-Date: 2025-11-12 10:02+0000\n" +"PO-Revision-Date: 2025-11-12 11:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -40527,8 +40527,8 @@ msgstr "" "???????? ????????? ??????? ??????? ???? ??????? ?????, ???????? ?????????? " "??????? ? ????, ?? ????? ?? ?????, ??? ???????? ?????? ?? ???? ????????? ??? " "?????, ?? ??????? ?? ?????????. ??? ????????? " -"?????????? ?????????? ???. ??????? OGC " +"?????????? ?????????? ???. ??????? OGC " "Covers, Contains, Within. ???????? " "?????????? ????? ????????? ??????????." @@ -40812,11 +40812,15 @@ msgid "" "link>). To enable the functions use create extension postgis_sfcgal." msgstr "" +"?????????? ? ?????????? ?????????? ????? ?????? ?? ???????? ???????? SFCGAL " +"http://www.sfcgal.org). " +"??? ????????? ???????, ????????????? ???????? create extension " +"postgis_sfcgal." #. Tag: title #, no-c-format msgid "SFCGAL Management Functions" -msgstr "" +msgstr "??????? ?????????? SFCGAL" #. Tag: para #, no-c-format @@ -40824,21 +40828,23 @@ msgid "" "This section lists functions for determining version of SFCGAL and library " "dependencies you are running." msgstr "" +"? ????? ??????? ?????????? ??????? ??? ?????????? ?????? SFCGAL ?? " +"??????????? ?????????, ??? ?? ??????????????." #. Tag: refpurpose #, no-c-format msgid "Returns the version of SFCGAL in use" -msgstr "" +msgstr "???????? ?????? SFCGAL, ?? ????????????????" #. Tag: funcdef #, no-c-format msgid "text postgis_sfcgal_version" -msgstr "" +msgstr "????? postgis_sfcgal_version" #. Tag: para #, no-c-format msgid "Returns the version of SFCGAL in use" -msgstr "" +msgstr "???????? ?????? SFCGAL, ?? ????????????????" #. Tag: para #, no-c-format @@ -40851,11 +40857,13 @@ msgid "" "Returns the full version of SFCGAL in use including CGAL and " "Boost versions" msgstr "" +"???????? ????? ?????? SFCGAL, ?? ????????????????, ????????? " +"?????? CGAL ?? Boost" #. Tag: funcdef #, no-c-format msgid "text postgis_sfcgal_full_version" -msgstr "" +msgstr "????? postgis_sfcgal_full_version" #. Tag: para #, no-c-format @@ -40863,11 +40871,13 @@ msgid "" "Returns the full version of SFCGAL in use including CGAL and Boost " "versions" msgstr "" +"???????? ????? ?????? SFCGAL, ?? ????????????????, ????????? ?????? " +"CGAL ? Boost" #. Tag: title #, no-c-format msgid "SFCGAL Accessors and Setters" -msgstr "" +msgstr "SFCGAL ???????? ?? ??????" #. Tag: para #, no-c-format @@ -40875,16 +40885,19 @@ msgid "" "These functions access or set properties of geometries. Geometries primarily " "supported by these functions are TINS and Polyhedral Surfaces." msgstr "" +"?? ??????? ???????????? ?????? ?? ???????????? ????????? ??? ?? " +"????????????. ?????????, ??? ? ????? ????? ????????????? ???? ?????????, ? " +"?? TINS ? ???????????? ????????." #. Tag: refpurpose #, no-c-format msgid "Force LHR orientation" -msgstr "" +msgstr "????????? ?????????? LHR" #. Tag: refpurpose #, no-c-format msgid "Check if a surface is or not planar" -msgstr "" +msgstr "?????????, ?? ? ???????? ???????" #. Tag: refpurpose #, no-c-format @@ -40902,7 +40915,7 @@ msgstr "" #. Tag: refpurpose #, no-c-format msgid "Determine surface orientation" -msgstr "" +msgstr "???????? ?????????? ????????" #. Tag: para #, no-c-format @@ -40910,32 +40923,37 @@ msgid "" "The function only applies to polygons. It returns -1 if the polygon is " "counterclockwise oriented and 1 if the polygon is clockwise oriented." msgstr "" +"??????? ?????????????? ?????? ?? ?????????. ???? ???????? -1, ???? ??????? " +"???????????? ????? ???????????? ???????, ? 1, ???? ??????? ???????????? ?? " +"???????????? ????????." #. Tag: refpurpose #, no-c-format msgid "Calculates the area of a geometry" -msgstr "" +msgstr "???????? ????? ?????????" #. Tag: para #, no-c-format msgid "Calculates the area of a geometry." -msgstr "" +msgstr "???????? ????? ???????????? ??????." #. Tag: para #, no-c-format msgid "Performed by the SFCGAL module" -msgstr "" +msgstr "??????????? ??????? SFCGAL" #. Tag: para #, no-c-format msgid "" "NOTE: this function returns a double precision value representing the area." msgstr "" +"????????: ?? ??????? ???????? ???????? ????????? ????????, ?? ??????????? " +"?????." #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format @@ -40945,7 +40963,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM IEC 13249-3: 8.1, 10.5" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM IEC 13249-3: 8.1, 10.5" #. Tag: para #, no-c-format @@ -40985,10 +41003,6 @@ msgid "" "linkend=\"CG_MakeSolid\"/>. Areal geometries have no volume. Here is an " "example to demonstrate." msgstr "" -"???? ??????? ???????? ??????????? ?? ????????? WKT, ???? ????????????? ?? " -"?????, ? ?? ?? ?????? ????. ??? ??????? ?? ????????, ???????? " -"??????????????? . ????? ?? ????? ??'???. ??? " -"??????? ??? ??????????." #. Tag: para #, no-c-format @@ -41038,6 +41052,8 @@ msgstr "" msgid "" "is deprecated as of 3.5.0. Use instead." msgstr "" +"? ?????????? ? ?????? 3.5.0. ??????? ????? ?????????????? ." #. Tag: para #, no-c-format @@ -41178,7 +41194,7 @@ msgid "" "Javascript rendering library." msgstr "" "3D-?????????? ???? ???????? ?? ????????? PostGIS ? ?????????? ? HTML ?? ????????? ? ?????????? ? HTML ?? ????????? ?????????? ??????????? X3Dom HTML Javascript." #. Tag: para @@ -41429,12 +41445,12 @@ msgid "" "shape provides a closer fit to the shape of the input than the shape " "produced by the convex hull." msgstr "" -"???????? ?????-????? ????? ? ?????????. ?????-????? ? ?? " -"(????????) ???????? ??????????? ?????????, ??? ??????? ??? ??????? ??????? " -"????? ? ??????? ???? ? ??????????? ?????? ??????? ?????. ?????-????? " -"?????????? ????? ????? ?????????? ?? ????? ??????? ?????, ??? ?????, " -"???????? ??????? ?????????." +"???????? ?????-????? ????? ? ?????????. ?????-????? ? ?? (????????) ???????? " +"??????????? ?????????, ??? ??????? ??? ??????? ??????? ????? ? ??????? ???? " +"? ??????????? ?????? ??????? ?????. ?????-????? ?????????? ????? ????? " +"?????????? ?? ????? ??????? ?????, ??? ?????, ???????? ??????? ?????????." #. Tag: para #, no-c-format @@ -41463,8 +41479,8 @@ msgstr "" "????? ???????????? CGAL ???????? ????? ? ????????? " "??????? ?????, ?? ???????????????? ? ????????? Alpha-Shape ??? ???????? " "???????????? ?????? ??????? ?????. ?????????? ?????????? ???. ? CGAL Alpha-Shapes. ?? ????????????? ??? " +"xlink:href=\"https://doc.cgal.org/latest/Alpha_shapes_2/index.html#" +"Chapter_2D_Alpha_Shapes\">CGAL Alpha-Shapes. ?? ????????????? ??? " "????????????? ?????????? ?????-????, ??? ???????? ????? ?? ?????? ?????????? " "?????." ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 76 +++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 30 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 12 11:04:27 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 11:04:27 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-196-gc6f24e941 Message-ID: <20251112190428.80FFD18CA81@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via c6f24e9419fc0d0ee6bc73448791dfd743e9ced0 (commit) via 26639a287dfb03c669c599105fbdac1a07bad29e (commit) via 4748b533671032e8078870660757ab3a9b80fdf2 (commit) from 315d6b7d248c460ef9d6cdec4520228b9a42ef20 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c6f24e9419fc0d0ee6bc73448791dfd743e9ced0 Author: Regina Obe Date: Tue Nov 11 00:36:49 2025 -0500 Topogeometry corruption fix - Fix for topogeometry corruption - Add tests - Add documentation for new function References #5983 for PostGIS 3.7.0 References https://gitea.osgeo.org/postgis/postgis/pulls/274 diff --git a/doc/extras_topology.xml b/doc/extras_topology.xml index 640bee1fb..d50276dd4 100644 --- a/doc/extras_topology.xml +++ b/doc/extras_topology.xml @@ -553,6 +553,57 @@ Rename a topology from topo_stage to topo_prod + + + FixCorruptTopoGeometryColumn + Fixes topogeometry corruption caused by upgrade to postgis_topology 3.6.0 and higher + + + + + text FixCorruptTopoGeometryColumn + name + layerSchema + name + layerTable + name + layerColumn + + + + + + Description + + +When upgrading from PostGIS topology <3.6.0 to version >3.6.0+, the topogeometry column definition was changed. +This caused corruption in topogeometries created before the upgrade. This function fixes this corruption in affected tables. + + + + Availability: 3.6.1 + + + + + Examples + Fix all topology columns + +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; + + + + + + See Also + + + + + + + Populate_Topology_Layer diff --git a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in index 869a09ce6..ccfbc83b3 100644 --- a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in +++ b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in @@ -18,30 +18,50 @@ CREATE OR REPLACE FUNCTION topology.FixCorruptTopoGeometryColumn(layerSchema name, layerTable name, layerColumn name) RETURNS text AS $$ -DECLARE var_sql text; var_row_count bigint; result text; +DECLARE var_sql text; var_row_count bigint; result text; var_create_index_sql text; var_drop_index_sql text; BEGIN + result = ''; -- if topogeometry is bigint, then fix damaged integer, need to upgrade to bigint IF EXISTS ( SELECT 1 FROM pg_catalog.pg_type AS pg_type JOIN pg_catalog.pg_class AS pg_class ON pg_class.oid = pg_type.typrelid JOIN pg_catalog.pg_attribute AS pga ON pga.attrelid = pg_class.oid JOIN pg_catalog.pg_type AS pg_attr_type on pg_attr_type.oid = pga.atttypid -WHERE pg_type.typname::regtype::text = 'topogeometry' AND pga.attname = 'id' +WHERE pg_type.typname = 'topogeometry' AND pga.attname = 'id' AND pg_type.typnamespace::regnamespace::text = 'topology' AND pga.atttypid::regtype::text = 'bigint' ) THEN + + -- generate index scripts to create and drop indexes that are based on the column + IF EXISTS( SELECT 1 FROM pg_indexes WHERE schemaname = layerSchema AND tablename = layerTable AND indexdef LIKE '%(' || layerColumn || ')%' ) THEN + SELECT string_agg(indexdef, ';'), string_agg('DROP INDEX ' || quote_ident(schemaname) || '.' || quote_ident(indexname), ';') INTO var_create_index_sql, var_drop_index_sql + FROM pg_indexes + WHERE schemaname = layerSchema + AND tablename = layerTable AND indexdef LIKE ('%(' || layerColumn || ')%'); + END IF; + + IF var_drop_index_sql > '' THEN + EXECUTE var_drop_index_sql; + END IF; + + -- correct any corrupt topogeometries and fix var_sql = format('UPDATE %1$I.%2$I SET %3$I = ( (%3$I).topology_id, (%3$I).layer_id, - (%3$I).id & 0xFFFFFFFF, - (%3$I).id >> 32 + ((%3$I).id & 0xFFFFFFFF)::bigint, + ((%3$I).id >> 32)::integer )::topology.topogeometry - WHERE ( (%3$I).id & 0xFFFFFFFF ) <> (%3$I).id OR ( (%3$I).id >> 32 ) = (%3$I).type ', layerSchema, layerTable, layerColumn); + WHERE ( (%3$I).id & 0xFFFFFFFF )::bigint <> (%3$I).id OR ( (%3$I).id >> 32 )::integer = (%3$I).type ', layerSchema, layerTable, layerColumn); EXECUTE var_sql; GET DIAGNOSTICS var_row_count = ROW_COUNT; - result = format('%s rows updated for %s.%s.%s column to bigint id type', var_row_count, layerSchema, layerTable, layerColumn); + + IF var_create_index_sql > '' THEN + EXECUTE var_create_index_sql; + result = result || E'\n' || 'Recreating indexes'; + END IF; + result = result || E'\n' || format('%s rows updated for %s.%s.%s column to bigint id type', var_row_count, layerSchema, layerTable, layerColumn); ELSE --we are coming from bigint and going back to integer var_sql = format('UPDATE %1$I.%2$I SET @@ -55,7 +75,7 @@ WHERE pg_type.typname::regtype::text = 'topogeometry' AND pga.attname = 'id' WHERE l.topology_id = (%3$I).topology_id AND l.layer_id = (%3$I).layer_id AND (%3$I).type <> l.feature_type ', topo_schema, topo_table, topo_column); EXECUTE var_sql; GET DIAGNOSTICS var_row_count = ROW_COUNT; - result = format('%s rows updated for %s.%s.%s column back to integer id type', var_row_count, topo_schema, topo_table, topo_column); + result = result || format('%s rows updated for %s.%s.%s column back to integer id type', var_row_count, topo_schema, topo_table, topo_column); END IF; RETURN result; END diff --git a/topology/test/regress/fix_topogeometry_columns.sql b/topology/test/regress/fix_topogeometry_columns.sql new file mode 100644 index 000000000..4849b6bf5 --- /dev/null +++ b/topology/test/regress/fix_topogeometry_columns.sql @@ -0,0 +1,13 @@ +set client_min_messages to WARNING; + +\i :top_builddir/topology/test/load_topology-4326.sql +\i ../load_features.sql +\i ../more_features.sql +\i ../hierarchy.sql +SELECT * FROM topology.layer; +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) +FROM topology.layer +WHERE schema_name > '' AND table_name > '' AND feature_column > ''; + +SELECT topology.DropTopology('city_data'); +DROP SCHEMA features CASCADE; diff --git a/topology/test/regress/fix_topogeometry_columns_expected b/topology/test/regress/fix_topogeometry_columns_expected new file mode 100644 index 000000000..feab46c95 --- /dev/null +++ b/topology/test/regress/fix_topogeometry_columns_expected @@ -0,0 +1,13 @@ +162|1|features|land_parcels|feature|3|0| +162|2|features|traffic_signs|feature|1|0| +162|3|features|city_streets|feature|2|0| +162|4|features|big_parcels|feature|3|1|1 +162|5|features|big_streets|feature|2|1|3 +162|6|features|big_signs|feature|1|1|2 +0 rows updated for features.land_parcels.feature column to bigint id type +0 rows updated for features.traffic_signs.feature column to bigint id type +0 rows updated for features.city_streets.feature column to bigint id type +0 rows updated for features.big_parcels.feature column to bigint id type +0 rows updated for features.big_streets.feature column to bigint id type +0 rows updated for features.big_signs.feature column to bigint id type +Topology 'city_data' dropped diff --git a/topology/test/regress/hooks/hook-after-upgrade-topology.sql b/topology/test/regress/hooks/hook-after-upgrade-topology.sql index 936b86319..c9b25bb51 100644 --- a/topology/test/regress/hooks/hook-after-upgrade-topology.sql +++ b/topology/test/regress/hooks/hook-after-upgrade-topology.sql @@ -1,8 +1,24 @@ +SELECT * FROM topology.layer; +\d upgrade_test.feature +-- https://trac.osgeo.org/postgis/ticket/5983 +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; + +\d upgrade_test.feature + -- See https://trac.osgeo.org/postgis/ticket/5102 SELECT topology.CopyTopology('upgrade_test', 'upgrade_test_copy'); +INSERT INTO upgrade_test.domain_test values ( + '{1,2}'::topology.topoelement, + '{{2,3}}'::topology.topoelementarray +); --- check if corruption -select geometrytype(tg) from upgrade_test.feature limit 2; +SELECT * FROM topology.layer; + +INSERT INTO upgrade_test.domain_test values ( + '{1,2}'::topology.topoelement, + '{{2,3}}'::topology.topoelementarray +); SELECT topology.DropTopology('upgrade_test'); SELECT topology.DropTopology('upgrade_test_copy'); diff --git a/topology/test/tests.mk b/topology/test/tests.mk index 383e38ccf..0b0ab3ff9 100644 --- a/topology/test/tests.mk +++ b/topology/test/tests.mk @@ -97,4 +97,6 @@ TESTS += \ $(top_srcdir)/topology/test/regress/validatetopologyrelation_large.sql \ $(top_srcdir)/topology/test/regress/validatetopology.sql \ $(top_srcdir)/topology/test/regress/validatetopology_large.sql \ - $(top_srcdir)/topology/test/regress/verifylargeids.sql + $(top_srcdir)/topology/test/regress/verifylargeids.sql \ + $(top_srcdir)/topology/test/regress/fix_topogeometry_columns.sql + commit 26639a287dfb03c669c599105fbdac1a07bad29e Author: Regina Obe Date: Thu Oct 30 00:08:40 2025 -0400 WIP: fix topogeometry column function addition diff --git a/topology/Makefile.in b/topology/Makefile.in index ce7cbb350..608f5e76a 100644 --- a/topology/Makefile.in +++ b/topology/Makefile.in @@ -141,6 +141,7 @@ topology.sql: \ sql/manage/CreateTopology.sql.in \ sql/manage/FindLayer.sql.in \ sql/manage/FindTopology.sql.in \ + sql/manage/FixCorruptTopoGeometryColumn.sql.in \ sql/manage/ManageHelper.sql.in \ sql/manage/MakeTopologyPrecise.sql.in \ sql/manage/TotalTopologySize.sql.in \ diff --git a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in new file mode 100644 index 000000000..869a09ce6 --- /dev/null +++ b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in @@ -0,0 +1,63 @@ +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +-- +-- PostGIS - Spatial Types for PostgreSQL +-- https://postgis.net +-- +-- Copyright (C) 2025 Regina Obe +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public License. See the COPYING file. +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +--{ +-- FixCorruptTopGeometryColumn((layerSchema name, layerTable name, layerColumn name) +-- +-- Needed to fix corruption of topogeometries caused by upgrade from < 3.6.0 to 3.6.0 and higher +-- +-- Availability: 3.6.1 +CREATE OR REPLACE FUNCTION topology.FixCorruptTopoGeometryColumn(layerSchema name, layerTable name, layerColumn name) +RETURNS text AS +$$ +DECLARE var_sql text; var_row_count bigint; result text; +BEGIN + -- if topogeometry is bigint, then fix damaged integer, need to upgrade to bigint + IF EXISTS ( SELECT 1 + FROM pg_catalog.pg_type AS pg_type + JOIN pg_catalog.pg_class AS pg_class ON pg_class.oid = pg_type.typrelid + JOIN pg_catalog.pg_attribute AS pga ON pga.attrelid = pg_class.oid + JOIN pg_catalog.pg_type AS pg_attr_type on pg_attr_type.oid = pga.atttypid +WHERE pg_type.typname::regtype::text = 'topogeometry' AND pga.attname = 'id' + AND + pg_type.typnamespace::regnamespace::text = 'topology' AND pga.atttypid::regtype::text = 'bigint' ) THEN + var_sql = format('UPDATE %1$I.%2$I + SET + %3$I = ( + (%3$I).topology_id, + (%3$I).layer_id, + (%3$I).id & 0xFFFFFFFF, + (%3$I).id >> 32 + )::topology.topogeometry + WHERE ( (%3$I).id & 0xFFFFFFFF ) <> (%3$I).id OR ( (%3$I).id >> 32 ) = (%3$I).type ', layerSchema, layerTable, layerColumn); + + EXECUTE var_sql; + GET DIAGNOSTICS var_row_count = ROW_COUNT; + result = format('%s rows updated for %s.%s.%s column to bigint id type', var_row_count, layerSchema, layerTable, layerColumn); + ELSE --we are coming from bigint and going back to integer + var_sql = format('UPDATE %1$I.%2$I + SET + %3$I = ( + (%3$I).topology_id, + (%3$I).layer_id, + (%3$I).id, + l.feature_type + )::topogeometry + FROM topology.layer AS l + WHERE l.topology_id = (%3$I).topology_id AND l.layer_id = (%3$I).layer_id AND (%3$I).type <> l.feature_type ', topo_schema, topo_table, topo_column); + EXECUTE var_sql; + GET DIAGNOSTICS var_row_count = ROW_COUNT; + result = format('%s rows updated for %s.%s.%s column back to integer id type', var_row_count, topo_schema, topo_table, topo_column); + END IF; + RETURN result; +END +$$ language plpgsql; +--} diff --git a/topology/test/regress/hooks/hook-after-upgrade-topology.sql b/topology/test/regress/hooks/hook-after-upgrade-topology.sql index 248b6206f..936b86319 100644 --- a/topology/test/regress/hooks/hook-after-upgrade-topology.sql +++ b/topology/test/regress/hooks/hook-after-upgrade-topology.sql @@ -1,6 +1,9 @@ -- See https://trac.osgeo.org/postgis/ticket/5102 SELECT topology.CopyTopology('upgrade_test', 'upgrade_test_copy'); +-- check if corruption +select geometrytype(tg) from upgrade_test.feature limit 2; + SELECT topology.DropTopology('upgrade_test'); SELECT topology.DropTopology('upgrade_test_copy'); diff --git a/topology/topology.sql.in b/topology/topology.sql.in index 96095fd5b..c364af34d 100644 --- a/topology/topology.sql.in +++ b/topology/topology.sql.in @@ -1417,6 +1417,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT; #include "sql/manage/CopyTopology.sql.in" #include "sql/manage/FindTopology.sql.in" #include "sql/manage/FindLayer.sql.in" +#include "sql/manage/FixCorruptTopoGeometryColumn.sql.in" #include "sql/manage/populate_topology_layer.sql.in" #include "sql/manage/RenameTopology.sql.in" #include "sql/manage/ValidateTopology.sql.in" commit 4748b533671032e8078870660757ab3a9b80fdf2 Author: Regina Obe Date: Wed Nov 12 12:22:24 2025 -0500 Fix xml entities issue in UK docs diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 1881aa1a4..a28b267b1 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -40089,7 +40089,7 @@ msgstr "" "DE-9IM ???????????? ?? 9-????????? ???????, ?? ?????? ?????? ????????? ??? " "???????????, ??????? ?? ?????????? ????????? ???? ?????????. ??? " "????????????? 9-?????????? ????????? ?????? ?? ????????????? ???????? 'F', " -"'0', '1', '2' (?????????, ?FF1FF0102?)." +"'0', '1', '2' (?????????, \"FF1FF0102\")." #. Tag: para #, no-c-format @@ -40232,8 +40232,8 @@ msgid "" msgstr "" "3: MultivalentEndpoint - " "??????? ????? ??????????? ? ????, ???? ???? ????????????? ?????? ?????? " -"????. ?????? ???????, ???? - ?? ??? ??????????? ??? ??????????? ??????? " -"????? (??? ?? ????????????/?????????)." +"????. ?????? ???????, ???? - ?? ??? \"?????????\" ??? \"?????????\" ??????? " +"????? (??? ?? \"???????????/????????\")." #. Tag: para #, no-c-format @@ -40244,7 +40244,7 @@ msgid "" msgstr "" "4: MonovalentEndpoint - " "??????? ????? ??????????? ? ????, ???? ???? ????????????? ?????? ???? ???. " -"?????? ???????, ???? - ?? ??? ????????????? ??? ?????????? ??????? ?????." +"?????? ???????, ???? - ?? ??? \"???????????\" ??? \"????????\" ??????? ?????." #. Tag: para #, no-c-format @@ -40351,7 +40351,7 @@ msgid "" "be computed by ." msgstr "" "?????????, ?? ???????? intersectionMatrix ?????? Dimensionally Extended 9-" +"xlink:href=\"http://en.wikipedia.org/wiki/DE-9IM\">Dimensionally Extended 9-" "Intersection Model (DE-9IM) ?????????? " "intersectionMatrixPattern. ???????? ??????? ???????? " "????? ????????? ?? ????????? ." @@ -41379,7 +41379,7 @@ msgid "" msgstr "" "?????????? ???????: ???????? ?????????, " "??? ? 3D ??'???????? ?????? ?????? ?????????. ??????? ST_3DUnion() ? " -"???????????? ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " +"\"??????????\" ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " "??????? ????? ??? ????, ?? ??????? SUM() ? AVG(), ?, ?? ? ????????? " "?????????, ??????? ????????? NULL." @@ -41399,7 +41399,7 @@ msgid "" msgstr "" "?????????? ???????: ???????? ?????????, " "??? ? 3D ??'???????? ?????? ?????? ?????????. ??????? CG_3DUnion() ? " -"???????????? ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " +"\"??????????\" ???????? ? ???????????? PostgreSQL. ?? ???????, ?? ???? ?????? " "??????? ????? ??? ????, ?? ??????? SUM() ? AVG(), ?, ?? ? ????????? " "?????????, ??????? ????????? NULL." @@ -41460,7 +41460,7 @@ msgid "" "produce more concave results. Alpha values greater than some data-dependent " "value produce the convex hull of the input." msgstr "" -"???????? ??????????? ????????????? ?????????? alpha, ???? " +"\"??????? ??????????\" ????????????? ?????????? alpha, ???? " "???? ???? ???????? ??? 0 ?? ??????????????. ????? ???????? ????? ????? ????? " "???????? ??????????. ???????? ?????, ?????? ?? ????? ????????, ?? ???????? " "??? ?????, ????? ?????? ???????? ??????? ?????." @@ -41477,7 +41477,7 @@ msgid "" "which defines alpha as the radius of the eroding disc." msgstr "" "????? ???????????? CGAL ???????? ????? ? ????????? " -"??????? ?????, ?? ???????????????? ? ????????? Alpha-Shape ??? ???????? " +"??????? ?????, ?? ???????????????? ? ????????? Alpha-Shape ??? \"??????\" " "???????????? ?????? ??????? ?????. ?????????? ?????????? ???. ? CGAL Alpha-Shapes. ?? ????????????? ??? " ----------------------------------------------------------------------- Summary of changes: doc/extras_topology.xml | 51 +++++++++++++ doc/po/uk/postgis-manual.po | 18 ++--- topology/Makefile.in | 1 + .../sql/manage/FixCorruptTopoGeometryColumn.sql.in | 83 ++++++++++++++++++++++ topology/test/regress/fix_topogeometry_columns.sql | 13 ++++ .../test/regress/fix_topogeometry_columns_expected | 13 ++++ .../regress/hooks/hook-after-upgrade-topology.sql | 19 +++++ topology/test/tests.mk | 4 +- topology/topology.sql.in | 1 + 9 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in create mode 100644 topology/test/regress/fix_topogeometry_columns.sql create mode 100644 topology/test/regress/fix_topogeometry_columns_expected hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 12 11:04:31 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 19:04:31 -0000 Subject: [PostGIS] #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 In-Reply-To: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> References: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> Message-ID: <062.038383ca0db5f8a5906c6d8cd62dad16@osgeo.org> #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 -----------------------+--------------------------- Reporter: packi | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: 3.6.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"c6f24e9419fc0d0ee6bc73448791dfd743e9ced0/git" c6f24e9/git]: {{{#!CommitTicketReference repository="git" revision="c6f24e9419fc0d0ee6bc73448791dfd743e9ced0" Topogeometry corruption fix - Fix for topogeometry corruption - Add tests - Add documentation for new function References #5983 for PostGIS 3.7.0 References https://gitea.osgeo.org/postgis/postgis/pulls/274 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 13:36:55 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 21:36:55 -0000 Subject: [PostGIS] #6015: Server Crash accessing Linestring as MultiLinestring Message-ID: <046.b07a6bdb4b8681a5776fa0a509197c31@osgeo.org> #6015: Server Crash accessing Linestring as MultiLinestring ---------------------+--------------------------- Reporter: fomp | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.6.x Keywords: | ---------------------+--------------------------- This code produces on a segmentation fault: CREATE TABLE geom (geo GEOMETRY(Geometry,31467)); INSERT INTO geom VALUES ('SRID=31467;LINESTRING(1 1, 2 3, 5 4)'); SELECT ST_SRID(ST_GeometryN(geo, 1)) FROM geom; -- returns wrong SRID SELECT ST_Transform(ST_GeometryN(geo, 1), 4326) FROM geom; -- CRASH! The segmentation fault happens only, when the Linestring is stored in a table. Linux Debian 12.12 on x86_64 postgresql-16 (16.10-1.pgdg12+1) postgresql-16-postgis-3 (3.6.0+dfsg-2.pgdg12+1) -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 13:40:02 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 21:40:02 -0000 Subject: [PostGIS] #6015: Server Crash accessing Linestring as MultiLinestring In-Reply-To: <046.b07a6bdb4b8681a5776fa0a509197c31@osgeo.org> References: <046.b07a6bdb4b8681a5776fa0a509197c31@osgeo.org> Message-ID: <061.241f829c4f8c3656c0c1d39f0334c35d@osgeo.org> #6015: Server Crash accessing Linestring as MultiLinestring ----------------------+--------------------------- Reporter: fomp | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.6.x Resolution: | Keywords: ----------------------+--------------------------- Description changed by fomp: Old description: > This code produces on a segmentation fault: > > CREATE TABLE geom (geo GEOMETRY(Geometry,31467)); > INSERT INTO geom VALUES ('SRID=31467;LINESTRING(1 1, 2 3, 5 4)'); > SELECT ST_SRID(ST_GeometryN(geo, 1)) FROM geom; -- returns wrong SRID > SELECT ST_Transform(ST_GeometryN(geo, 1), 4326) FROM geom; -- CRASH! > > The segmentation fault happens only, when the Linestring is stored in a > table. > > Linux Debian 12.12 on x86_64 > postgresql-16 (16.10-1.pgdg12+1) > postgresql-16-postgis-3 (3.6.0+dfsg-2.pgdg12+1) New description: This code produces on a segmentation fault: {{{ CREATE TABLE geom (geo GEOMETRY(Geometry,31467)); INSERT INTO geom VALUES ('SRID=31467;LINESTRING(1 1, 2 3, 5 4)'); SELECT ST_SRID(ST_GeometryN(geo, 1)) FROM geom; -- returns wrong SRID SELECT ST_Transform(ST_GeometryN(geo, 1), 4326) FROM geom; -- CRASH! }}} The segmentation fault happens only, when the Linestring is stored in a table. Linux Debian 12.12 on x86_64 postgresql-16 (16.10-1.pgdg12+1) postgresql-16-postgis-3 (3.6.0+dfsg-2.pgdg12+1) -- -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 15:18:21 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 23:18:21 -0000 Subject: [PostGIS] #5953: Slow st_intersection with big input polygons In-Reply-To: <050.c0e7396007ce3f2eb2e0c46a98464742@osgeo.org> References: <050.c0e7396007ce3f2eb2e0c46a98464742@osgeo.org> Message-ID: <065.32ef3242127762e431a54303b8d324c0@osgeo.org> #5953: Slow st_intersection with big input polygons --------------------------------+--------------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: postgis | Version: master Resolution: worksforme | Keywords: --------------------------------+--------------------------- Changes (by pramsey): * resolution: => worksforme * status: new => closed -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 15:21:54 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 12 Nov 2025 23:21:54 -0000 Subject: [PostGIS] #6015: Server Crash accessing Linestring as MultiLinestring In-Reply-To: <046.b07a6bdb4b8681a5776fa0a509197c31@osgeo.org> References: <046.b07a6bdb4b8681a5776fa0a509197c31@osgeo.org> Message-ID: <061.b9bde8b9ae98ba6a2fe902e2f8d720dd@osgeo.org> #6015: Server Crash accessing Linestring as MultiLinestring ------------------------+--------------------------- Reporter: fomp | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.6.1 Component: postgis | Version: 3.6.x Resolution: duplicate | Keywords: ------------------------+--------------------------- Changes (by pramsey): * resolution: => duplicate * status: new => closed Comment: This crashes 3.6.0, but does not crash 3.6.1dev, see #5987 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 12 17:02:41 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 17:02:41 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-197-g605727d96 Message-ID: <20251113010241.93B9118D8D0@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 605727d9659a0d63f2ffdac567e742feb486b518 (commit) from c6f24e9419fc0d0ee6bc73448791dfd743e9ced0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 605727d9659a0d63f2ffdac567e742feb486b518 Author: Regina Obe Date: Wed Nov 12 20:00:15 2025 -0500 FixCorruptTopoGeometryColumn revision to work for PG < 16 Hex notation for bigint not supported for PG < 16 Use actual digits instead. References #5983 diff --git a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in index ccfbc83b3..9c1ca04ec 100644 --- a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in +++ b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in @@ -49,10 +49,10 @@ WHERE pg_type.typname = 'topogeometry' AND pga.attname = 'id' %3$I = ( (%3$I).topology_id, (%3$I).layer_id, - ((%3$I).id & 0xFFFFFFFF)::bigint, + ((%3$I).id & 4294967295 )::bigint, ((%3$I).id >> 32)::integer )::topology.topogeometry - WHERE ( (%3$I).id & 0xFFFFFFFF )::bigint <> (%3$I).id OR ( (%3$I).id >> 32 )::integer = (%3$I).type ', layerSchema, layerTable, layerColumn); + WHERE ( (%3$I).id & 4294967295 )::bigint <> (%3$I).id OR ( (%3$I).id >> 32 )::integer = (%3$I).type ', layerSchema, layerTable, layerColumn); EXECUTE var_sql; GET DIAGNOSTICS var_row_count = ROW_COUNT; ----------------------------------------------------------------------- Summary of changes: topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 12 17:02:49 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 01:02:49 -0000 Subject: [PostGIS] #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 In-Reply-To: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> References: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> Message-ID: <062.9d40288330f9e2e5b18a6ffc819446b5@osgeo.org> #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 -----------------------+--------------------------- Reporter: packi | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: 3.6.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"605727d9659a0d63f2ffdac567e742feb486b518/git" 605727d/git]: {{{#!CommitTicketReference repository="git" revision="605727d9659a0d63f2ffdac567e742feb486b518" FixCorruptTopoGeometryColumn revision to work for PG < 16 Hex notation for bigint not supported for PG < 16 Use actual digits instead. References #5983 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 12 17:18:11 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 17:18:11 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-198-gb79acd4a7 Message-ID: <20251113011811.32A8818ED31@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via b79acd4a709c4b9e6cbc63d71b043f137759efb3 (commit) from 605727d9659a0d63f2ffdac567e742feb486b518 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b79acd4a709c4b9e6cbc63d71b043f137759efb3 Author: Regina Obe Date: Wed Nov 12 20:17:21 2025 -0500 Get rid of PG14 testing on woodie Any issues with lower versions would be picked up by PG13 Hoping to reduce failures of woodie diff --git a/.woodpecker/regress.yml b/.woodpecker/regress.yml index b331edcb3..fa79b9ce7 100644 --- a/.woodpecker/regress.yml +++ b/.woodpecker/regress.yml @@ -68,15 +68,6 @@ steps: - <<: *steps-env - <<: *steps-pg-build - build-pg14: - image: *test-image - depends_on: autogen - environment: - PGVER: 14 - commands: - - <<: *steps-env - - <<: *steps-pg-build - build-pg15: image: *test-image depends_on: autogen @@ -105,16 +96,6 @@ steps: - <<: *steps-start-postgresql - <<: *steps-pg-test-preinstall - check-pg14: - image: *test-image - depends_on: build-pg14 - environment: - PGVER: 14 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-test-preinstall - check-pg15: image: *test-image depends_on: build-pg15 @@ -146,17 +127,6 @@ steps: - <<: *steps-pg-install - <<: *steps-pg-test-install - installcheck-pg14: - image: *test-image - depends_on: build-pg14 - environment: - PGVER: 14 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-install - - <<: *steps-pg-test-install - installcheck-pg15: image: *test-image depends_on: build-pg15 ----------------------------------------------------------------------- Summary of changes: .woodpecker/regress.yml | 30 ------------------------------ 1 file changed, 30 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 12 18:02:01 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 18:02:01 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.0-31-g6a16232cb Message-ID: <20251113020202.21EB018F89A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 6a16232cb57a202d0e1407fedb6f59ede0a354ec (commit) from abf2fb9b06665ae0099acd6ccaeeb0c8bbc0f1c4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6a16232cb57a202d0e1407fedb6f59ede0a354ec Author: Regina Obe Date: Wed Nov 12 18:44:10 2025 -0500 topology.FixCorruptTopoGeometryColumn to fix corruption caused by 3.6.0 upgrade - Add function - Add tests - Add docs - Add NEWS References #5983 for PostGIS 3.6.1 diff --git a/NEWS b/NEWS index 6fbc465ee..2a2fd08da 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,16 @@ PostGIS 3.6.1 -2025/xx/xx +2025/11/xx + +This version requires PostgreSQL 12-18, GEOS 3.8 or higher, and Proj 6.1+. +To take advantage of all features, GEOS 3.14+ is needed. +To take advantage of all SFCGAL features, SFCGAL 2.2+ is needed. + +If you are upgrading postgis_topology and have topogeometry columns, make sure to run +after the upgrade to fix topogeometry corruption: + +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; * Fixes * @@ -17,6 +27,8 @@ PostGIS 3.6.1 - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) - #6012, Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) - #6013, [tiger_geocoder] Load Tiger 2025 data (Regina Obe) + - #5983, [topology] topology.FixCorruptTopoGeometryColumn + to fix corruption caused by 3.6.0 upgrade (Regina Obe, Francois Bonzon) PostGIS 3.6.0 diff --git a/doc/extras_topology.xml b/doc/extras_topology.xml index 3854a4a93..833ad2ca1 100644 --- a/doc/extras_topology.xml +++ b/doc/extras_topology.xml @@ -535,6 +535,57 @@ Rename a topology from topo_stage to topo_prod + + + FixCorruptTopoGeometryColumn + Fixes topogeometry corruption caused by upgrade to postgis_topology 3.6.0 and higher + + + + + text FixCorruptTopoGeometryColumn + name + layerSchema + name + layerTable + name + layerColumn + + + + + + Description + + +When upgrading from PostGIS topology <3.6.0 to version >3.6.0+, the topogeometry column definition was changed. +This caused corruption in topogeometries created before the upgrade. This function fixes this corruption in affected tables. + + + + Availability: 3.6.1 + + + + + Examples + Fix all topology columns + +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; + + + + + + See Also + + + + + + + Populate_Topology_Layer diff --git a/topology/Makefile.in b/topology/Makefile.in index ce7cbb350..608f5e76a 100644 --- a/topology/Makefile.in +++ b/topology/Makefile.in @@ -141,6 +141,7 @@ topology.sql: \ sql/manage/CreateTopology.sql.in \ sql/manage/FindLayer.sql.in \ sql/manage/FindTopology.sql.in \ + sql/manage/FixCorruptTopoGeometryColumn.sql.in \ sql/manage/ManageHelper.sql.in \ sql/manage/MakeTopologyPrecise.sql.in \ sql/manage/TotalTopologySize.sql.in \ diff --git a/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in new file mode 100644 index 000000000..9c1ca04ec --- /dev/null +++ b/topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in @@ -0,0 +1,83 @@ +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +-- +-- PostGIS - Spatial Types for PostgreSQL +-- https://postgis.net +-- +-- Copyright (C) 2025 Regina Obe +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public License. See the COPYING file. +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +--{ +-- FixCorruptTopGeometryColumn((layerSchema name, layerTable name, layerColumn name) +-- +-- Needed to fix corruption of topogeometries caused by upgrade from < 3.6.0 to 3.6.0 and higher +-- +-- Availability: 3.6.1 +CREATE OR REPLACE FUNCTION topology.FixCorruptTopoGeometryColumn(layerSchema name, layerTable name, layerColumn name) +RETURNS text AS +$$ +DECLARE var_sql text; var_row_count bigint; result text; var_create_index_sql text; var_drop_index_sql text; +BEGIN + result = ''; + -- if topogeometry is bigint, then fix damaged integer, need to upgrade to bigint + IF EXISTS ( SELECT 1 + FROM pg_catalog.pg_type AS pg_type + JOIN pg_catalog.pg_class AS pg_class ON pg_class.oid = pg_type.typrelid + JOIN pg_catalog.pg_attribute AS pga ON pga.attrelid = pg_class.oid + JOIN pg_catalog.pg_type AS pg_attr_type on pg_attr_type.oid = pga.atttypid +WHERE pg_type.typname = 'topogeometry' AND pga.attname = 'id' + AND + pg_type.typnamespace::regnamespace::text = 'topology' AND pga.atttypid::regtype::text = 'bigint' ) THEN + + -- generate index scripts to create and drop indexes that are based on the column + IF EXISTS( SELECT 1 FROM pg_indexes WHERE schemaname = layerSchema AND tablename = layerTable AND indexdef LIKE '%(' || layerColumn || ')%' ) THEN + SELECT string_agg(indexdef, ';'), string_agg('DROP INDEX ' || quote_ident(schemaname) || '.' || quote_ident(indexname), ';') INTO var_create_index_sql, var_drop_index_sql + FROM pg_indexes + WHERE schemaname = layerSchema + AND tablename = layerTable AND indexdef LIKE ('%(' || layerColumn || ')%'); + END IF; + + IF var_drop_index_sql > '' THEN + EXECUTE var_drop_index_sql; + END IF; + + -- correct any corrupt topogeometries and fix + var_sql = format('UPDATE %1$I.%2$I + SET + %3$I = ( + (%3$I).topology_id, + (%3$I).layer_id, + ((%3$I).id & 4294967295 )::bigint, + ((%3$I).id >> 32)::integer + )::topology.topogeometry + WHERE ( (%3$I).id & 4294967295 )::bigint <> (%3$I).id OR ( (%3$I).id >> 32 )::integer = (%3$I).type ', layerSchema, layerTable, layerColumn); + + EXECUTE var_sql; + GET DIAGNOSTICS var_row_count = ROW_COUNT; + + IF var_create_index_sql > '' THEN + EXECUTE var_create_index_sql; + result = result || E'\n' || 'Recreating indexes'; + END IF; + result = result || E'\n' || format('%s rows updated for %s.%s.%s column to bigint id type', var_row_count, layerSchema, layerTable, layerColumn); + ELSE --we are coming from bigint and going back to integer + var_sql = format('UPDATE %1$I.%2$I + SET + %3$I = ( + (%3$I).topology_id, + (%3$I).layer_id, + (%3$I).id, + l.feature_type + )::topogeometry + FROM topology.layer AS l + WHERE l.topology_id = (%3$I).topology_id AND l.layer_id = (%3$I).layer_id AND (%3$I).type <> l.feature_type ', topo_schema, topo_table, topo_column); + EXECUTE var_sql; + GET DIAGNOSTICS var_row_count = ROW_COUNT; + result = result || format('%s rows updated for %s.%s.%s column back to integer id type', var_row_count, topo_schema, topo_table, topo_column); + END IF; + RETURN result; +END +$$ language plpgsql; +--} diff --git a/topology/test/regress/fix_topogeometry_columns.sql b/topology/test/regress/fix_topogeometry_columns.sql new file mode 100644 index 000000000..725e36375 --- /dev/null +++ b/topology/test/regress/fix_topogeometry_columns.sql @@ -0,0 +1,11 @@ +set client_min_messages to WARNING; + +\i :top_builddir/topology/test/load_topology-4326.sql +\i ../load_features.sql +\i ../more_features.sql +\i ../hierarchy.sql +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) +FROM topology.layer; + +SELECT topology.DropTopology('city_data'); +DROP SCHEMA features CASCADE; diff --git a/topology/test/regress/fix_topogeometry_columns_expected b/topology/test/regress/fix_topogeometry_columns_expected new file mode 100644 index 000000000..3652720d1 --- /dev/null +++ b/topology/test/regress/fix_topogeometry_columns_expected @@ -0,0 +1,7 @@ +0 rows updated for features.land_parcels.feature column to bigint id type +0 rows updated for features.traffic_signs.feature column to bigint id type +0 rows updated for features.city_streets.feature column to bigint id type +0 rows updated for features.big_parcels.feature column to bigint id type +0 rows updated for features.big_streets.feature column to bigint id type +0 rows updated for features.big_signs.feature column to bigint id type +Topology 'city_data' dropped diff --git a/topology/test/regress/hooks/hook-after-upgrade-topology.sql b/topology/test/regress/hooks/hook-after-upgrade-topology.sql index 248b6206f..c0c4166b6 100644 --- a/topology/test/regress/hooks/hook-after-upgrade-topology.sql +++ b/topology/test/regress/hooks/hook-after-upgrade-topology.sql @@ -1,6 +1,20 @@ +SELECT * FROM topology.layer; +\d upgrade_test.feature +-- https://trac.osgeo.org/postgis/ticket/5983 +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; + +\d upgrade_test.feature -- See https://trac.osgeo.org/postgis/ticket/5102 SELECT topology.CopyTopology('upgrade_test', 'upgrade_test_copy'); +SELECT * FROM topology.layer; +INSERT INTO upgrade_test.domain_test values ( + '{1,2}'::topology.topoelement, + '{{2,3}}'::topology.topoelementarray +); + +SELECT * FROM upgrade_test.domain_test; SELECT topology.DropTopology('upgrade_test'); SELECT topology.DropTopology('upgrade_test_copy'); diff --git a/topology/test/tests.mk b/topology/test/tests.mk index aa1a67526..ea1609deb 100644 --- a/topology/test/tests.mk +++ b/topology/test/tests.mk @@ -96,4 +96,6 @@ TESTS += \ $(top_srcdir)/topology/test/regress/validatetopologyrelation_large.sql \ $(top_srcdir)/topology/test/regress/validatetopology.sql \ $(top_srcdir)/topology/test/regress/validatetopology_large.sql \ - $(top_srcdir)/topology/test/regress/verifylargeids.sql + $(top_srcdir)/topology/test/regress/verifylargeids.sql \ + $(top_srcdir)/topology/test/regress/fix_topogeometry_columns.sql + diff --git a/topology/topology.sql.in b/topology/topology.sql.in index 96095fd5b..c364af34d 100644 --- a/topology/topology.sql.in +++ b/topology/topology.sql.in @@ -1417,6 +1417,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT; #include "sql/manage/CopyTopology.sql.in" #include "sql/manage/FindTopology.sql.in" #include "sql/manage/FindLayer.sql.in" +#include "sql/manage/FixCorruptTopoGeometryColumn.sql.in" #include "sql/manage/populate_topology_layer.sql.in" #include "sql/manage/RenameTopology.sql.in" #include "sql/manage/ValidateTopology.sql.in" ----------------------------------------------------------------------- Summary of changes: NEWS | 14 +++- doc/extras_topology.xml | 51 +++++++++++++ topology/Makefile.in | 1 + .../sql/manage/FixCorruptTopoGeometryColumn.sql.in | 83 ++++++++++++++++++++++ ...gacy_query.sql => fix_topogeometry_columns.sql} | 8 +-- .../test/regress/fix_topogeometry_columns_expected | 7 ++ .../regress/hooks/hook-after-upgrade-topology.sql | 14 ++++ topology/test/tests.mk | 4 +- topology/topology.sql.in | 1 + 9 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 topology/sql/manage/FixCorruptTopoGeometryColumn.sql.in copy topology/test/regress/{legacy_query.sql => fix_topogeometry_columns.sql} (52%) create mode 100644 topology/test/regress/fix_topogeometry_columns_expected hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 12 18:02:13 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 02:02:13 -0000 Subject: [PostGIS] #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 In-Reply-To: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> References: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> Message-ID: <062.7311fb51abda2d31b61dafb5f986fec6@osgeo.org> #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 -----------------------+--------------------------- Reporter: packi | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: 3.6.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"6a16232cb57a202d0e1407fedb6f59ede0a354ec/git" 6a16232/git]: {{{#!CommitTicketReference repository="git" revision="6a16232cb57a202d0e1407fedb6f59ede0a354ec" topology.FixCorruptTopoGeometryColumn to fix corruption caused by 3.6.0 upgrade - Add function - Add tests - Add docs - Add NEWS References #5983 for PostGIS 3.6.1 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 18:08:06 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 02:08:06 -0000 Subject: [PostGIS] #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 Message-ID: <046.d6f8f671fe634a31df9584dceb12b62a@osgeo.org> #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 ---------------------+--------------------------- Reporter: robe | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: 3.6.x Keywords: | ---------------------+--------------------------- This ticket is split from #5983 Our integration-tests caught an error when upgrading from PostGIS 3.5 to 3.6 with a very simple topology.topoelement. We're calling `SELECT public.postgis_extensions_upgrade();` like the documentation suggests but it ends up either erroring out with: `ERROR: column "t" of table "postgis_test" contains values that violate the new constraint` (the offending line is in `postgis_topology--ANY-- 3.6.0.sql`: `ALTER DOMAIN topology.topoelement ADD CONSTRAINT type_range CHECK ( VALUE[2] > 0 );`) or, worse, silently "corrupting" the data when accessing single members of the `topoelement`. It still returns the right values when accessing the whole element. The problem seems to be that we alter the type of the domain to be bigint[] in the catalog which seems to work fine to access the whole element, but access to single members yields it returning a negative value which means the check will fail for some values. Steps to reproduce: 1. Create fresh PG17 instance. 2. Execute: {{{ CREATE EXTENSION postgis VERSION '3.5.0'; CREATE EXTENSION postgis_topology VERSION '3.5.0'; SELECT version(); SELECT postgis_version(); CREATE TABLE postgis_test (t topology.topoelement); INSERT INTO postgis_test VALUES (ARRAY[1,2]); SELECT t[1], t[2] FROM postgis_test; ALTER EXTENSION postgis UPDATE; SELECT postgis_extensions_upgrade(); SELECT t[1], t[2] FROM postgis_test; SELECT * FROM postgis_test; SELECT version(); SELECT postgis_version(); }}} Output: {{{ CREATE EXTENSION CREATE EXTENSION version ---------------------------------------------------------------------------------------------------------- PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3), 64-bit (1 row) postgis_version --------------------------------------- 3.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row) CREATE TABLE INSERT 0 1 t | t ---+--- 1 | 2 (1 row) ALTER EXTENSION NOTICE: Updating extension postgis 3.6.0 NOTICE: Updating extension postgis_topology 3.5.0 INFO: Upgraded topoelement from integer[] to bigint[] INFO: Upgraded topoelementarray from integer[][] to bigint[][] INFO: Modified topology added useslargeids(BOOLEAN) INFO: Upgraded topogeometry.id from integer to bigint INFO: Upgraded getfaceedges_returntype.edge from integer to bigint INFO: Upgraded validatetopology_returntype.id1 from integer to bigint INFO: Upgraded validatetopology_returntype.id2 from integer to bigint postgis_extensions_upgrade ------------------------------------------------------------------------------------ Upgrade to version 3.6.0 completed, run SELECT postgis_full_version(); for details (1 row) t | t ------------+--- 8589934593 | 0 (1 row) t ------- {1,2} (1 row) version ---------------------------------------------------------------------------------------------------------- PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3), 64-bit (1 row) postgis_version --------------------------------------- 3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row) postgres=# }}} Our automated reproduction case where we can reproduce the constraint error every time involves upgrading from PG 16 to 17 but this should also illustrate the problem. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 18:12:57 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 02:12:57 -0000 Subject: [PostGIS] #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 In-Reply-To: <047.19101ab1e8a2fd6eb96f9129d4ea94c8@osgeo.org> References: <047.19101ab1e8a2fd6eb96f9129d4ea94c8@osgeo.org> Message-ID: <062.0559e95a3dcffc6c09c35759418daa97@osgeo.org> #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 ----------------------+--------------------------- Reporter: packi | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: 3.6.x Resolution: | Keywords: ----------------------+--------------------------- Changes (by robe): * cc: packi, adesugbaa (added) * reporter: robe => packi -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 18:18:49 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 02:18:49 -0000 Subject: [PostGIS] #5983: Data corruption in topology.topogeometry after upgrade to 3.6.0 (was: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0) In-Reply-To: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> References: <047.b46aadc639363ed0c4294cf04295054b@osgeo.org> Message-ID: <062.ccada73cd786abc82416f2682e4ec4d3@osgeo.org> #5983: Data corruption in topology.topogeometry after upgrade to 3.6.0 -----------------------+--------------------------- Reporter: packi | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.6.1 Component: topology | Version: 3.6.x Resolution: fixed | Keywords: -----------------------+--------------------------- Changes (by robe): * resolution: => fixed * status: new => closed * summary: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0 => Data corruption in topology.topogeometry after upgrade to 3.6.0 Old description: > Our integration-tests caught an error when upgrading from PostGIS 3.5 to > 3.6 with a very simple topology.topoelement. > > We're calling `SELECT public.postgis_extensions_upgrade();` like the > documentation suggests but it ends up either erroring out with: > > `ERROR: column "t" of table "postgis_test" contains values that violate > the new constraint` (the offending line is in `postgis_topology--ANY-- > 3.6.0.sql`: `ALTER DOMAIN topology.topoelement ADD CONSTRAINT type_range > CHECK ( VALUE[2] > 0 );`) > > or, worse, silently "corrupting" the data when accessing single members > of the `topoelement`. It still returns the right values when accessing > the whole element. > > The problem seems to be that we alter the type of the domain to be > bigint[] in the catalog which seems to work fine to access the whole > element, but access to single members yields it returning a negative > value which means the check will fail for some values. > > Steps to reproduce: > > 1. Create fresh PG17 instance. > 2. Execute: > {{{ > CREATE EXTENSION postgis VERSION '3.5.0'; > CREATE EXTENSION postgis_topology VERSION '3.5.0'; > > SELECT version(); > SELECT postgis_version(); > > CREATE TABLE postgis_test (t topology.topoelement); > INSERT INTO postgis_test VALUES (ARRAY[1,2]); > SELECT t[1], t[2] FROM postgis_test; > > ALTER EXTENSION postgis UPDATE; > SELECT postgis_extensions_upgrade(); > SELECT t[1], t[2] FROM postgis_test; > SELECT * FROM postgis_test; > > SELECT version(); > SELECT postgis_version(); > }}} > Output: > {{{ > CREATE EXTENSION > CREATE EXTENSION > version > ---------------------------------------------------------------------------------------------------------- > PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 > 20240912 (Red Hat 14.2.1-3), 64-bit > (1 row) > > postgis_version > --------------------------------------- > 3.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 > (1 row) > > CREATE TABLE > INSERT 0 1 > t | t > ---+--- > 1 | 2 > (1 row) > > ALTER EXTENSION > NOTICE: Updating extension postgis 3.6.0 > NOTICE: Updating extension postgis_topology 3.5.0 > INFO: Upgraded topoelement from integer[] to bigint[] > INFO: Upgraded topoelementarray from integer[][] to bigint[][] > INFO: Modified topology added useslargeids(BOOLEAN) > INFO: Upgraded topogeometry.id from integer to bigint > INFO: Upgraded getfaceedges_returntype.edge from integer to bigint > INFO: Upgraded validatetopology_returntype.id1 from integer to bigint > INFO: Upgraded validatetopology_returntype.id2 from integer to bigint > postgis_extensions_upgrade > ------------------------------------------------------------------------------------ > Upgrade to version 3.6.0 completed, run SELECT postgis_full_version(); > for details > (1 row) > > t | t > ------------+--- > 8589934593 | 0 > (1 row) > > t > ------- > {1,2} > (1 row) > > version > ---------------------------------------------------------------------------------------------------------- > PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 > 20240912 (Red Hat 14.2.1-3), 64-bit > (1 row) > > postgis_version > --------------------------------------- > 3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 > (1 row) > > postgres=# > }}} > > Our automated reproduction case where we can reproduce the constraint > error every time involves upgrading from PG 16 to 17 but this should also > illustrate the problem. New description: This ticket now just addresses topology.topogeometry though it started as issue discussing topoelement corruption which is related. topoelement issue is now on #6016 Our integration-tests caught an error when upgrading from PostGIS 3.5 to 3.6 with a very simple topology.topoelement. We're calling `SELECT public.postgis_extensions_upgrade();` like the documentation suggests but it ends up either erroring out with: `ERROR: column "t" of table "postgis_test" contains values that violate the new constraint` (the offending line is in `postgis_topology--ANY-- 3.6.0.sql`: `ALTER DOMAIN topology.topoelement ADD CONSTRAINT type_range CHECK ( VALUE[2] > 0 );`) or, worse, silently "corrupting" the data when accessing single members of the `topoelement`. It still returns the right values when accessing the whole element. The problem seems to be that we alter the type of the domain to be bigint[] in the catalog which seems to work fine to access the whole element, but access to single members yields it returning a negative value which means the check will fail for some values. Steps to reproduce: 1. Create fresh PG17 instance. 2. Execute: {{{ CREATE EXTENSION postgis VERSION '3.5.0'; CREATE EXTENSION postgis_topology VERSION '3.5.0'; SELECT version(); SELECT postgis_version(); CREATE TABLE postgis_test (t topology.topoelement); INSERT INTO postgis_test VALUES (ARRAY[1,2]); SELECT t[1], t[2] FROM postgis_test; ALTER EXTENSION postgis UPDATE; SELECT postgis_extensions_upgrade(); SELECT t[1], t[2] FROM postgis_test; SELECT * FROM postgis_test; SELECT version(); SELECT postgis_version(); }}} Output: {{{ CREATE EXTENSION CREATE EXTENSION version ---------------------------------------------------------------------------------------------------------- PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3), 64-bit (1 row) postgis_version --------------------------------------- 3.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row) CREATE TABLE INSERT 0 1 t | t ---+--- 1 | 2 (1 row) ALTER EXTENSION NOTICE: Updating extension postgis 3.6.0 NOTICE: Updating extension postgis_topology 3.5.0 INFO: Upgraded topoelement from integer[] to bigint[] INFO: Upgraded topoelementarray from integer[][] to bigint[][] INFO: Modified topology added useslargeids(BOOLEAN) INFO: Upgraded topogeometry.id from integer to bigint INFO: Upgraded getfaceedges_returntype.edge from integer to bigint INFO: Upgraded validatetopology_returntype.id1 from integer to bigint INFO: Upgraded validatetopology_returntype.id2 from integer to bigint postgis_extensions_upgrade ------------------------------------------------------------------------------------ Upgrade to version 3.6.0 completed, run SELECT postgis_full_version(); for details (1 row) t | t ------------+--- 8589934593 | 0 (1 row) t ------- {1,2} (1 row) version ---------------------------------------------------------------------------------------------------------- PostgreSQL 17.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3), 64-bit (1 row) postgis_version --------------------------------------- 3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row) postgres=# }}} Our automated reproduction case where we can reproduce the constraint error every time involves upgrading from PG 16 to 17 but this should also illustrate the problem. -- Comment: The patch I put in place only addresses the topogeometry corruption and is more of a workaround that requires the user to run: {{{ SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) FROM topology.layer; }}} The topoelement part is continued on #6016 - topology.topoelement. I think it's rare that people store topoelements in tables, so less of an issue. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 12 21:05:44 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 21:05:44 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-161-ga3b679e Message-ID: <20251113050544.D344318EB34@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via a3b679ec3d4de7698794b9005b825192e6bb5137 (commit) from ef2180888e17e813ce63d87d77158cbc01bd2d1b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a3b679ec3d4de7698794b9005b825192e6bb5137 Author: Regina Obe Date: Thu Nov 13 00:05:38 2025 -0500 Fix typo diff --git a/content/development/rfcs/rfc05.md b/content/development/rfcs/rfc05.md index 53a807c..bfe44e6 100644 --- a/content/development/rfcs/rfc05.md +++ b/content/development/rfcs/rfc05.md @@ -20,7 +20,7 @@ This RFC should be only changed by PostGIS PSC members. All PSC members must agr To formalize source tree access, and specify some guidelines for primary source committers and patch submitters. # Election to Core Contributors Group - Permission for write source tree access to our primary repo (?https://gitea.osgeo.org/gpostgis/postgis.git) shall be provided to contributors only if accepted by the PostGIS Project Steering Committee. A proposal should be written to the PSC for new contributors and voted on normally. It is not necessary to write an RFC document for these votes, a proposal to postgis-dev is sufficient. After approval, the approved contributor shall be given write access to the PostGIS source repo and also added to the documentation under the section ?Core Contributors Present + Permission for write source tree access to our primary repo (?https://gitea.osgeo.org/postgis/postgis.git) shall be provided to contributors only if accepted by the PostGIS Project Steering Committee. A proposal should be written to the PSC for new contributors and voted on normally. It is not necessary to write an RFC document for these votes, a proposal to postgis-dev is sufficient. After approval, the approved contributor shall be given write access to the PostGIS source repo and also added to the documentation under the section ?Core Contributors Present Removal of write access should be handled by the same process. ----------------------------------------------------------------------- Summary of changes: content/development/rfcs/rfc05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- postgis.net From trac at osgeo.org Wed Nov 12 21:23:57 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 05:23:57 -0000 Subject: [PostGIS] #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 In-Reply-To: <047.19101ab1e8a2fd6eb96f9129d4ea94c8@osgeo.org> References: <047.19101ab1e8a2fd6eb96f9129d4ea94c8@osgeo.org> Message-ID: <062.323cfbe2a44e21d8b5926a5862c046bb@osgeo.org> #6016: Data corruption in topoelement after upgrade to PostGIS 3.6 -----------------------+--------------------------- Reporter: packi | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: topology | Version: 3.6.x Resolution: | Keywords: -----------------------+--------------------------- Changes (by robe): * component: postgis => topology * owner: pramsey => strk -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 21:42:29 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 05:42:29 -0000 Subject: [PostGIS] #6017: copytopology creates blank feature_column sometimes Message-ID: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> #6017: copytopology creates blank feature_column sometimes ----------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.5.5 Component: topology | Version: 3.5.x Keywords: | ----------------------+--------------------------- While testing the topogeometry corruption and putting in hooks before/after. I noticed that the copytopology test is failing, but hooks don't tell me that. Anyway I also confirmed this issue has nothing to do with the support for bigint as the same issue exists in 3.5.5dev. I haven't confirmed older versions. To replicate run the hook tests we have without upgrading. I'll add the test to 3.7 after I've figured out what's up with woodie. {{{ CREATE EXTENSION postgis VERSION "3.5.5dev"; CREATE EXTENSION postgis_topology VERSION "3.5.5dev"; SELECT topology.createTopology('upgrade_test'); -- Create some TopoGeometry data CREATE TABLE upgrade_test.feature(id serial primary key); SELECT topology.AddTopoGeometryColumn('upgrade_test', 'upgrade_test', 'feature', 'tg', 'linear'); INSERT INTO upgrade_test.feature(tg) SELECT topology.toTopoGeom('LINESTRING(0 0, 10 0)', 'upgrade_test', 1); CREATE INDEX ON upgrade_test.feature ( id(tg) ); -- Create some TopoGeometry data CREATE TABLE upgrade_test.domain_test(a topology.topoelement, b topology.topoelementarray); INSERT INTO upgrade_test.domain_test values ( '{1,2}'::topology.topoelement, '{{2,3}}'::topology.topoelementarray ); SELECT * FROM topology.layer; SELECT topology.CopyTopology('upgrade_test', 'upgrade_test_copy'); SELECT * FROM topology.layer; }}} output is: {{{ createtopology ---------------- 1 (1 row) addtopogeometrycolumn ----------------------- 1 (1 row) INSERT 0 1 CREATE INDEX topology_id | layer_id | schema_name | table_name | feature_column | feature_type | level | child_id -------------+----------+--------------+------------+----------------+--------------+-------+---------- 1 | 1 | upgrade_test | feature | tg | 2 | 0 | (1 row) copytopology -------------- 2 (1 row) topology_id | layer_id | schema_name | table_name | feature_column | feature_type | level | child_id -------------+----------+-------------------+------------+----------------+--------------+-------+---------- 1 | 1 | upgrade_test | feature | tg | 2 | 0 | 2 | 1 | upgrade_test_copy | LAYER1 | | 2 | 0 | (2 rows) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Nov 12 21:44:19 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 05:44:19 -0000 Subject: [PostGIS] #6017: copytopology creates blank feature_column sometimes In-Reply-To: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> References: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> Message-ID: <061.f2576182cea7cc5da7c1a020563824bc@osgeo.org> #6017: copytopology creates blank feature_column sometimes -----------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.5.5 Component: topology | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by robe): Just a note that I only tested on windows. With {{{ PostgreSQL 18.0 on x86_64-windows, compiled by msvc-19.44.35215, 64-bit POSTGIS="3.5.5dev 3.5.4-7-g6e6c2eb22" [EXTENSION] PGSQL="180" GEOS="3.14.0-CAPI-1.20.4" PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=C:\Users\lr\AppData\Local/proj DATABASE_PATH=C:\ming64\projects\proj\rel- proj-8.2.1w64/share/proj/proj.db" (compiled against PROJ 8.2.1) LIBXML="2.12.5" LIBPROTOBUF="1.2.1" WAGYU="0.5.0 (Internal)" TOPOLOGY }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 12 22:17:19 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 12 Nov 2025 22:17:19 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-199-g29853175c Message-ID: <20251113061719.469AC18FC32@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 29853175cee94a9800dec1cc2d2c4ce966c01ac2 (commit) from b79acd4a709c4b9e6cbc63d71b043f137759efb3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 29853175cee94a9800dec1cc2d2c4ce966c01ac2 Author: Regina Obe Date: Thu Nov 13 00:59:29 2025 -0500 Revise fix_topogeometry_column tests to be order independent diff --git a/topology/test/regress/fix_topogeometry_columns.sql b/topology/test/regress/fix_topogeometry_columns.sql index 4849b6bf5..dd3454db8 100644 --- a/topology/test/regress/fix_topogeometry_columns.sql +++ b/topology/test/regress/fix_topogeometry_columns.sql @@ -4,10 +4,9 @@ set client_min_messages to WARNING; \i ../load_features.sql \i ../more_features.sql \i ../hierarchy.sql -SELECT * FROM topology.layer; SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) FROM topology.layer -WHERE schema_name > '' AND table_name > '' AND feature_column > ''; +ORDER BY schema_name, table_name, feature_column; SELECT topology.DropTopology('city_data'); DROP SCHEMA features CASCADE; diff --git a/topology/test/regress/fix_topogeometry_columns_expected b/topology/test/regress/fix_topogeometry_columns_expected index feab46c95..c17525cc7 100644 --- a/topology/test/regress/fix_topogeometry_columns_expected +++ b/topology/test/regress/fix_topogeometry_columns_expected @@ -1,13 +1,7 @@ -162|1|features|land_parcels|feature|3|0| -162|2|features|traffic_signs|feature|1|0| -162|3|features|city_streets|feature|2|0| -162|4|features|big_parcels|feature|3|1|1 -162|5|features|big_streets|feature|2|1|3 -162|6|features|big_signs|feature|1|1|2 +0 rows updated for features.big_parcels.feature column to bigint id type +0 rows updated for features.big_signs.feature column to bigint id type +0 rows updated for features.big_streets.feature column to bigint id type +0 rows updated for features.city_streets.feature column to bigint id type 0 rows updated for features.land_parcels.feature column to bigint id type 0 rows updated for features.traffic_signs.feature column to bigint id type -0 rows updated for features.city_streets.feature column to bigint id type -0 rows updated for features.big_parcels.feature column to bigint id type -0 rows updated for features.big_streets.feature column to bigint id type -0 rows updated for features.big_signs.feature column to bigint id type Topology 'city_data' dropped ----------------------------------------------------------------------- Summary of changes: topology/test/regress/fix_topogeometry_columns.sql | 3 +-- topology/test/regress/fix_topogeometry_columns_expected | 14 ++++---------- 2 files changed, 5 insertions(+), 12 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 12 22:27:17 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 06:27:17 -0000 Subject: [PostGIS] #6017: copytopology creates blank feature_column sometimes In-Reply-To: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> References: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> Message-ID: <061.52e8f4b4b5b5e53a0793fc915a1d6b2b@osgeo.org> #6017: copytopology creates blank feature_column sometimes -----------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.5.5 Component: topology | Version: 3.5.x Resolution: | Keywords: -----------------------+--------------------------- Comment (by strk): That's actually expected, as CopyTopology does NOT copy the layer data, so what you are left with is so-called "DETACHED" layers, as reported by TopologySummary: {{{ =# select topologysummary(name) from topology where name = 'upgrade_test_copy'; topologysummary -------------------------------------------------------- Topology upgrade_test_copy (id 3, SRID 0, precision 0)+ 2 nodes, 1 edges, 0 faces, 1 topogeoms in 1 layers + Layer 1, type Lineal (2), 1 topogeoms + Deploy: NONE (detached) + (1 row) }}} Since there's no "deploy" target for those layers (that are known to exist as the relation table data IS copied and refers to them) the code write arbitrary information in the "schema_name", "table_name" and "feature_column" of the newly created layer record; and when I implemented that I evidently went with the topology schema as the detached/phantom layer's "schema_name", the literal "LAYER#" as the "table_name" and a plain NULL as the "feature_column". And one of these values (I guess the NULL) is what TopologySummary recognizes as a signe of a "DETACHED" layer. I hope this is clear and see #1195 for a past discussion about this situation and proposals for improving them. But given the above, this ticket should probably be closed as invalid (expected). Just make sure it's "always" and not "sometimes' that this happen, maybe ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 13 06:10:01 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 14:10:01 -0000 Subject: [PostGIS] #6017: copytopology creates blank feature_column sometimes In-Reply-To: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> References: <046.f85e06f3abb980b0cfb9b865d6de5038@osgeo.org> Message-ID: <061.efc4c0f09a67fcd72e9767e02658b6e2@osgeo.org> #6017: copytopology creates blank feature_column sometimes -----------------------+--------------------------- Reporter: robe | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.5.5 Component: topology | Version: 3.5.x Resolution: invalid | Keywords: -----------------------+--------------------------- Changes (by robe): * resolution: => invalid * status: new => closed Comment: It's always I think. Okay will close. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Nov 13 08:16:51 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 08:16:51 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-200-g6044af623 Message-ID: <20251113161652.024861941C1@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 6044af623ede9e6ba856793a0b0394842e60e99e (commit) from 29853175cee94a9800dec1cc2d2c4ce966c01ac2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6044af623ede9e6ba856793a0b0394842e60e99e Author: Regina Obe Date: Thu Nov 13 11:15:48 2025 -0500 Add Lauren?iu Nicola to the core team diff --git a/doc/introduction.xml b/doc/introduction.xml index 429253b27..8136fe819 100644 --- a/doc/introduction.xml +++ b/doc/introduction.xml @@ -115,6 +115,15 @@ Geometry Processing, PostgreSQL gist, general bug fixing + + + Lauren?iu Nicola + + Bug fixes, maintenance, stability, and performance + + + + ----------------------------------------------------------------------- Summary of changes: doc/introduction.xml | 9 +++++++++ 1 file changed, 9 insertions(+) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 13 08:27:34 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 08:27:34 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-201-g567f201c7 Message-ID: <20251113162734.57B951941FE@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 567f201c77c22a97ab28530c33de764bdb0bfa43 (commit) from 6044af623ede9e6ba856793a0b0394842e60e99e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 567f201c77c22a97ab28530c33de764bdb0bfa43 Author: Regina Obe Date: Thu Nov 13 11:27:27 2025 -0500 Update pot template diff --git a/doc/po/templates/postgis-manual.pot b/doc/po/templates/postgis-manual.pot index c8d019da2..af249573e 100644 --- a/doc/po/templates/postgis-manual.pot +++ b/doc/po/templates/postgis-manual.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" -"POT-Creation-Date: 2025-08-21 03:28+0000\n" +"POT-Creation-Date: 2025-11-13 16:23+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -39,11 +39,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are disabled " -"by default. In order to re-enable these, you need to set the following " -"environment variables POSTGIS_GDAL_ENABLED_DRIVERS and " +"Out-of-db rasters and all raster drivers are disabled by default. In order " +"to re-enable these, you need to set the following environment variables " +"POSTGIS_GDAL_ENABLED_DRIVERS and " "POSTGIS_ENABLE_OUTDB_RASTERS in the server environment. " -"For PostGIS 2.2, you can use the more cross-platform approach of setting the " +"You can also use the more cross-platform approach of setting the " "corresponding ." msgstr "" @@ -81,9 +81,9 @@ msgstr "" msgid "" "Setting environment variables varies depending on OS. For PostgreSQL " "installed on Ubuntu or Debian via apt-postgresql, the preferred way is to " -"edit /etc/postgresql/10/" -"main/environment where 10 refers to " -"version of PostgreSQL and main refers to the cluster." +"edit /etc/postgresql/MAJOR/" +"CLUSTER/environment where the " +"placeholders refer to the PostgreSQL major version and cluster name." msgstr "" #. Tag: para @@ -117,9 +117,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"If you are using PostgreSQL 9.1+ and have compiled and installed the " -"extensions/postgis modules, you can turn a database into a spatial one using " -"the EXTENSION mechanism." +"If you have compiled and installed the extensions/postgis modules, you can " +"turn a database into a spatial one using the EXTENSION mechanism." msgstr "" #. Tag: para @@ -239,28 +238,32 @@ msgstr "" #. Tag: title #, no-c-format -msgid "Soft Upgrade 9.1+ using extensions" +msgid "Soft upgrade using extensions" msgstr "" #. Tag: para #, no-c-format msgid "" "If you originally installed PostGIS with extensions, then you need to " -"upgrade using extensions as well. Doing a minor upgrade with extensions, is " +"upgrade using extensions as well. Doing a minor upgrade with extensions is " "fairly painless." msgstr "" #. Tag: para #, no-c-format msgid "" -"If you are running PostGIS 3 or above, then you should use the function to upgrade to the latest " -"version you have installed." +"Use the function to upgrade " +"to the latest version you have installed." msgstr "" #. Tag: para #, no-c-format -msgid "If you are running PostGIS 2.5 or lower, then do the following:" +msgid "" +"If you are upgrading a database that still runs PostGIS 2.5, issue an " +"ALTER EXTENSION followed by " +"postgis_extensions_upgrade() to make sure the legacy " +"postgis_raster objects are folded back into the main " +"extension." msgstr "" #. Tag: para @@ -317,68 +320,16 @@ msgstr "" #. Tag: title #, no-c-format -msgid "Soft Upgrade Pre 9.1+ or without extensions" +msgid "Soft upgrade without extensions" msgstr "" #. Tag: para #, no-c-format msgid "" -"This section applies only to those who installed PostGIS not using " -"extensions. If you have extensions and try to upgrade with this approach " -"you'll get messages like:" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"NOTE: if you are moving from PostGIS 1.* to PostGIS 2.* or from PostGIS 2.* " -"prior to r7409, you cannot use this procedure but would rather need to do a " -"HARD UPGRADE." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"After compiling and installing (make install) you should find a set of " -"*_upgrade.sql files in the installation folders. You " -"can list them all with:" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"Load them all in turn, starting from postgis_upgrade.sql." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"The same procedure applies to raster, topology and sfcgal extensions, with " -"upgrade files named rtpostgis_upgrade.sql, " -"topology_upgrade.sql and sfcgal_upgrade.sql respectively. If you need them:" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "You are advised to switch to an extension based install by running" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"If you can't find the postgis_upgrade.sql specific for " -"upgrading your version you are using a version too early for a soft upgrade " -"and need to do a HARD UPGRADE." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"The function should inform you " -"about the need to run this kind of upgrade using a \"procs need upgrade\" " -"message." +"Extensions have been the supported installation method for many releases. If " +"you still rely on an unpackaged installation, perform a HARD UPGRADE into a database created with " +"extensions and migrate your data there." msgstr "" #. Tag: title @@ -563,9 +514,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"For PostgreSQL 9.4+ configuration can be set at the server level without " -"touching postgresql.conf or postgresql.auto.conf " -"by using the ALTER SYSTEM command." +"PostgreSQL configuration can be set at the server level without touching " +"postgresql.conf or postgresql.auto.conf by using " +"the ALTER SYSTEM command." msgstr "" #. Tag: para @@ -598,10 +549,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"This is generally used for table partitioning. The default for this is set " -"to \"partition\" which is ideal for PostgreSQL 8.4 and above since it will " -"force the planner to only analyze tables for constraint consideration if " -"they are in an inherited hierarchy and not pay the planner penalty otherwise." +"This is generally used for table partitioning. The default of \"partition\" " +"forces the planner to only analyze tables for constraint consideration if " +"they are in an inherited hierarchy and avoids paying the planner penalty " +"otherwise." msgstr "" #. Tag: link @@ -611,7 +562,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "Default: ~128MB in PostgreSQL 9.6" +msgid "Default: ~128MB" msgstr "" #. Tag: para @@ -626,9 +577,9 @@ msgstr "" msgid "" "max_worker_processes " -"This setting is only available for PostgreSQL 9.4+. For PostgreSQL 9.6+ this " -"setting has additional importance in that it controls the max number of " -"processes you can have for parallel queries." +"controls the maximum number of background processes available to the server " +"and therefore also bounds how many workers can participate in parallel " +"queries." msgstr "" #. Tag: para @@ -709,14 +660,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"This setting is only available for PostgreSQL 9.6+ and will only affect " -"PostGIS 2.3+, since only PostGIS 2.3+ supports parallel queries. If set to " -"higher than 0, then some queries such as those involving relation functions " -"like ST_Intersects can use multiple processes and can run more " -"than twice as fast when doing so. If you have a lot of processors to spare, " -"you should change the value of this to as many processors as you have. Also " -"make sure to bump up max_worker_processes to at least as high " -"as this number." +"Parallel query support in modern PostgreSQL and PostGIS uses this setting to " +"decide how many workers a plan may request. If set to higher than 0, then " +"some queries such as those involving relation functions like " +"ST_Intersects can use multiple processes and can run more than " +"twice as fast when doing so. If you have a lot of processors to spare, you " +"should change the value of this to as many processors as you have. Also make " +"sure to bump up max_worker_processes to at least as high as " +"this number." msgstr "" #. Tag: para @@ -1228,7 +1179,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "(28). A 5 digit number. Identifies a Zip Code" +msgid "(28). A 5 digit number. Identifies a ZIP code" msgstr "" #. Tag: para @@ -1334,7 +1285,7 @@ msgstr "" #, no-c-format msgid "" "(token number \"13\"). (SADS elements \"ZIP CODE\" , \"PLUS 4\" ). This " -"attribute is used for both the US Zip and the Canadian Postal Codes." +"attribute is used for both the US ZIP and the Canadian postal codes." msgstr "" #. Tag: para @@ -1721,10 +1672,9 @@ msgstr "" #. Tag: para #, no-c-format 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." +"The history_table extension is written in plpgsql and " +"located in the extras/history_table directory of the " +"PostGIS source tree." msgstr "" #. Tag: para @@ -1849,22 +1799,22 @@ msgstr "" #, no-c-format msgid "" "The script builds a schema called tiger to house all the " -"tiger related functions, reusable lookup data such as road type prefixes, " +"TIGER-related functions, reusable lookup data such as road type prefixes, " "suffixes, states, various control tables for managing data load, and " -"skeleton base tables from which all the tiger loaded tables inherit from." +"skeleton base tables from which all the TIGER-loaded tables inherit." msgstr "" #. Tag: para #, no-c-format msgid "" "Another schema called tiger_data is also created which " -"houses all the census data for each state that the loader downloads from " +"houses all the census data for each state that the loader downloads from the " "Census site and loads into the database. In the current model, each set of " "state tables is prefixed with the state code e.g ma_addr, " "ma_edges etc with constraints to enforce only that state " "data. Each of these tables inherits from the tables addr, " "faces, edges, etc located in the " -"tiger schema." +"tiger schema." msgstr "" #. Tag: para @@ -1872,9 +1822,9 @@ msgstr "" msgid "" "All the geocode functions only reference the base tables, so there is no " "requirement that the data schema be called tiger_data or " -"that data can't be further partitioned into other schemas -- e.g a different " -"schema for each state, as long as all the tables inherit from the tables in " -"the tiger schema." +"that data can't be further partitioned into other schemas -- e.g. a " +"different schema for each state, as long as all the tables inherit from the " +"tables in the tiger schema." msgstr "" #. Tag: para @@ -1888,9 +1838,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"If you are using tiger geocoder (tiger_2010), you can upgrade the scripts " -"using the accompanying upgrade_geocoder.bat / .sh scripts in extras/tiger. " -"One major change between tiger_2010 and " +"If you are using the TIGER Geocoder (tiger_2010), you can upgrade the " +"scripts using the accompanying upgrade_geocoder.bat / .sh scripts in extras/" +"tiger. One major change between tiger_2010 and " "tiger_2011+ is that the county and " "state tables are no longer broken out by state. If you " "have data from tiger_2010 and want to replace with tiger_2015, refer to " @@ -1900,16 +1850,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"New in PostGIS 2.2.0 release is support for Tiger 2015 data and inclusion of " -"Address Standardizer as part of PostGIS." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"New in PostGIS 2.1.0 release is ability to install tiger geocoder with " -"PostgreSQL extension model if you are running PostgreSQL 9.1+. Refer to " -" for details." +"You can install the TIGER Geocoder with the PostgreSQL extension model. " +"Refer to for details." msgstr "" #. Tag: para @@ -1939,9 +1881,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The reverse_geocode function, introduced in PostGIS 2.0.0 " -"is useful for deriving the street address and cross streets of a GPS " -"location." +"The reverse_geocode function is useful for deriving the " +"street address and cross streets of a GPS location." msgstr "" #. Tag: para @@ -1976,8 +1917,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"There are a couple other open source geocoders for PostGIS, that unlike " -"tiger geocoder have the advantage of multi-country geocoding support" +"There are a couple other open source geocoders for PostGIS, that unlike the " +"TIGER Geocoder have the advantage of multi-country geocoding support" msgstr "" #. Tag: para @@ -1985,12 +1926,12 @@ msgstr "" msgid "" "Nominatim uses OpenStreetMap gazeteer formatted data. It requires osm2pgsql for " -"loading the data, PostgreSQL 8.4+ and PostGIS 1.5+ to function. It is " -"packaged as a webservice interface and seems designed to be called as a " -"webservice. Just like the tiger geocoder, it has both a geocoder and a " -"reverse geocoder component. From the documentation, it is unclear if it has " -"a pure SQL interface like the tiger geocoder, or if a good deal of the logic " -"is implemented in the web interface." +"loading the data together with PostgreSQL and PostGIS. It is packaged as a " +"webservice interface and seems designed to be called as a webservice. Just " +"like the TIGER Geocoder, it has both a geocoder and a reverse geocoder " +"component. From the documentation, it is unclear if it has a pure SQL " +"interface like the TIGER Geocoder, or if a good deal of the logic is " +"implemented in the web interface." msgstr "" #. Tag: para @@ -2121,14 +2062,6 @@ msgstr "" msgid "Examples: Basic" msgstr "" -#. Tag: para -#, no-c-format -msgid "" -"The below examples timings are on a 3.0 GHZ single processor Windows 7 " -"machine with 2GB ram running PostgreSQL 9.1rc1/PostGIS 2.0 loaded with all " -"of MA,MN,CA, RI state Tiger data loaded." -msgstr "" - #. Tag: para #, no-c-format msgid "Exact matches are faster to compute (61ms)" @@ -2196,21 +2129,6 @@ msgid "" "PostgreSQL fuzzy string matching (soundex,levenshtein)" msgstr "" -#. Tag: para -#, no-c-format -msgid "" -"The below examples timings are on a 3.0 GHZ single processor Windows 7 " -"machine with 2GB ram running PostgreSQL 9.0/PostGIS 1.5 loaded with all of " -"MA state Tiger data loaded. Currently a bit slow (3000 ms)" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"Testing on Windows 2003 64-bit 8GB on PostGIS 2.0 PostgreSQL 64-bit Tiger " -"2011 data loaded -- (41ms)" -msgstr "" - #. Tag: para #, no-c-format msgid "" @@ -2376,9 +2294,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"includes this logic, but if you installed tiger geocoder prior to PostGIS " -"2.0.0 alpha5, you'll need to run this on the states you have already done to " -"get these additional tables." +"includes this logic, but if you installed the TIGER Geocoder with older " +"scripts, rerun it on the states you have already processed to get these " +"additional tables." msgstr "" #. Tag: para @@ -2502,7 +2420,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"Enhanced: 2.4.1 zip code 5 tabulation area (zcta5) load step was fixed and " +"Enhanced: 2.4.1 ZIP Code 5 tabulation area (zcta5) load step was fixed and " "when enabled, zcta5 data is loaded as a single table called zcta5_all as " "part of the nation script load." msgstr "" @@ -2510,7 +2428,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"If you want zip code 5 tabulation area (zcta5) to be included in your nation " +"If you want ZIP Code 5 tabulation area (zcta5) to be included in your nation " "script load, do the following:" msgstr "" @@ -2695,7 +2613,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"zip4 last 4 digits of a 9 digit zip code. Availability: " +"zip4 last 4 digits of a 9 digit ZIP Code. Availability: " "PostGIS 2.4.0." msgstr "" @@ -3112,11 +3030,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The PostGIS topology module has existed in prior versions of PostGIS but was " -"never part of the Official PostGIS documentation. In PostGIS 2.0.0 major " -"cleanup is going on to remove use of all deprecated functions in it, fix " -"known usability issues, better document the features and functions, add new " -"functions, and enhance to closer conform to SQL-MM standards." +"The PostGIS topology module has existed for a long time but was not always " +"part of the official documentation. Extensive cleanup removed deprecated " +"functions, fixed known usability issues, documented the features and " +"functions, added new functionality, and improved SQL-MM compliance." msgstr "" #. Tag: para @@ -3143,9 +3060,89 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"Topology support is build by default starting with PostGIS 2.0, and can be " -"disabled specifying --without-topology configure option at build time as " -"described in " +"Topology support is built by default and can be disabled by specifying the --" +"without-topology configure option at build time as described in " +msgstr "" + +#. Tag: title +#, no-c-format +msgid "Topology Primitive Tables" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The core primitives of any topology are stored in the edge_data, node, and face tables that " +"live in the schema created by . Each row " +"of edge_data represents an oriented edge: it records a " +"directed curve from start_node to end_node together with the identifier of the face encountered on the left of " +"that direction (left_face) and the face encountered on " +"the right (right_face). The same geometric segment may " +"therefore appear twice?once for each orientation?when it belongs to two " +"faces." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The next_left_edge and next_right_edge " +"columns complete this orientation information by encoding how to keep " +"walking around a face. They store signed integers whose absolute value is " +"the identifier of the next oriented edge and whose sign determines whether " +"the stored orientation has to be followed as-is or reversed when traversing. " +"Formally, the following rules hold for every edge e:" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"abs(next_left_edge) is the identifier of the edge reached " +"by continuing around the face that lies to the left of e. " +"If the value is positive the walk continues from the end node of e along the stored orientation of the referenced edge; if it is " +"negative the referenced edge must be followed backwards so that the shared " +"face remains on the walker?s left." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"abs(next_right_edge) analogously follows the boundary of " +"the face located on the right of e. A positive value " +"means that the next edge is taken with its recorded orientation starting " +"from the end node of e, whereas a negative value " +"instructs to traverse the referenced edge in reverse, starting from its end " +"node, so that the right-hand face is preserved." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"A zero value indicates that the edge is dangling on the corresponding side " +"(for example an isolated edge whose incident face is the universal face " +"0). The abs_next_left_edge and " +"abs_next_right_edge columns exposed by the edge view are convenience projections of these absolute values." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"This representation is a variant of a doubly connected edge list and is " +"exploited by many topology routines. Functions such as and rely on " +"it to reconstruct face boundaries and to diagnose inconsistencies?hence the " +"?invalid next_left_edge? and ?invalid next_right_edge? diagnostics reported " +"during validation. Constructors like initialise " +"the next_* attributes with trivial self references, while " +"editing routines including and update the links as edges are inserted or " +"removed. Other bulk operations (for example ) may intentionally leave the fields unset, " +"which is why the documentation flags their behaviour explicitly." msgstr "" #. Tag: title @@ -3533,6 +3530,32 @@ msgid "" "integrity checks." msgstr "" +#. Tag: refpurpose +#, no-c-format +msgid "" +"Fixes topogeometry corruption caused by upgrade to postgis_topology 3.6.0 " +"and higher" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"When upgrading from PostGIS topology <3.6.0 to version >3.6.0+, the " +"topogeometry column definition was changed. This caused corruption in " +"topogeometries created before the upgrade. This function fixes this " +"corruption in affected tables." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Availability: 3.6.1" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Fix all topology columns" +msgstr "" + #. Tag: refpurpose #, no-c-format msgid "" @@ -4191,7 +4214,14 @@ msgstr "" #. Tag: para #, no-c-format -msgid "Enhanced: 2.0 added the signature accepting hasZ" +msgid "Enhanced: 2.0 added support for hasZ." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"Enhanced: 3.6.0 added topoid and usesLargeIDs parameters." msgstr "" #. Tag: para @@ -4337,9 +4367,30 @@ msgstr "" msgid "" "Adds a linestring to an existing topology and returns a set of signed edge " "identifiers forming it up (negative identifies mean the edge goes in the " -"opposite direction of the input linestring). The given line will snap to " -"existing nodes or edges within given tolerance. Existing edges and faces may " -"be split by the line. New nodes and faces may be added." +"opposite direction of the input linestring)." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The given line will snap to existing nodes or edges within given tolerance. " +"Existing edges and faces may be split by the line. New nodes and faces may " +"be added, in addition to new edges." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The returned edge identifiers may be either existing edges or newly created " +"edges as needed to fully represent the input line as closely as possible." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The number of newly created edges (either covering space previously " +"uncovered or resulting from split of existing edges) may be limited by the " +"max_edges parameter." msgstr "" #. Tag: para @@ -4354,6 +4405,13 @@ msgstr "" msgid "Enhanced: 3.2.0 added support for returning signed identifier." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"Enhanced: 3.7.0 added support for limiting the number of new edges created " +"in the topology." +msgstr "" + #. Tag: para #, no-c-format msgid "" @@ -5604,7 +5662,8 @@ msgstr "" #, no-c-format msgid "" "When tolerance is given it will be used to snap the input " -"geometry to existing primitives." +"geometry to existing primitives. The special value -1 (default) means use " +"the topology precision as tolerance." msgstr "" #. Tag: para @@ -5629,6 +5688,13 @@ msgstr "" msgid "Enhanced: 2.1.0 adds the version taking an existing TopoGeometry." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"Changed: 3.7.0 changes meaning of tolerance 0 to really mean 0 and -1 (new " +"default) to request using the topology precision." +msgstr "" + #. Tag: para #, no-c-format msgid "This is a full self-contained workflow" @@ -6767,22 +6833,22 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"As of PostGIS v1.4.0, all the functions have comments generated from the " -"documentation. If you wish to install these comments into your spatial " -"databases later, run the command which requires docbook. The " -"postgis_comments.sql and other package comments files raster_comments.sql, " -"topology_comments.sql are also packaged in the tar.gz distribution in the " -"doc folder so no need to make comments if installing from the tar ball. " -"Comments are also included as part of the CREATE EXTENSION install." +"All the functions have comments generated from the documentation. If you " +"wish to install these comments into your spatial databases later, run the " +"command which requires docbook. The postgis_comments.sql and other package " +"comment files are also packaged in the tar.gz distribution in the doc folder " +"so no need to make comments if installing from the tar ball. Comments are " +"also included as part of the CREATE EXTENSION install." msgstr "" #. Tag: para #, no-c-format msgid "" -"Introduced in PostGIS 2.0. This generates html cheat sheets suitable for " -"quick reference or for student handouts. This requires xsltproc to build and " -"will generate 4 files in doc folder topology_cheatsheet.html, tiger_geocoder_cheatsheet.html, " +"The make cheatsheets target generates html cheat sheets " +"suitable for quick reference or for student handouts. This requires xsltproc " +"to build and will generate 4 files in doc folder " +"topology_cheatsheet.html, " +"tiger_geocoder_cheatsheet.html, " "raster_cheatsheet.html, postgis_cheatsheet." "html" msgstr "" @@ -6803,8 +6869,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The PostGIS extensions are built and installed automatically if you are " -"using PostgreSQL 9.1+." +"The PostGIS extensions are built and installed automatically when PostgreSQL " +"extension support is available." msgstr "" #. Tag: para @@ -6923,15 +6989,14 @@ msgid "" "Extension tables spatial_ref_sys, layer, topology can not be explicitly backed up. They " "can only be backed up when the respective postgis or " -"postgis_topology extension is backed up, which only seems " -"to happen when you backup the whole database. As of PostGIS 2.0.1, only srid " -"records not packaged with PostGIS are backed up when the database is backed " -"up so don't go around changing srids we package and expect your changes to " -"be there. Put in a ticket if you find an issue. The structures of extension " -"tables are never backed up since they are created with CREATE " -"EXTENSION and assumed to be the same for a given version of an " -"extension. These behaviors are built into the current PostgreSQL extension " -"model, so nothing we can do about it." +"postgis_topology extension is backed up, which only " +"happens when you back up the whole database. Only srid records not packaged " +"with PostGIS are captured in backups, so don't change the entries we ship " +"and expect the modifications to persist. Put in a ticket if you find an " +"issue. The structures of extension tables are never backed up since they are " +"created with CREATE EXTENSION and assumed to be the same for a " +"given version of an extension. These behaviors are built into the current " +"PostgreSQL extension model." msgstr "" #. Tag: para @@ -6981,6 +7046,27 @@ msgid "" "headaches." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"Sandboxed build accounts that are not PostgreSQL superusers can delegate " +"database ownership during the regression cycle by exporting " +"POSTGIS_REGRESS_DB_OWNER. The harness will create the " +"temporary regression database owned by the nominated role while continuing " +"to connect using the less privileged account. Combine this with " +"POSTGIS_REGRESS_ROLE_EXT_CREATOR when the extension " +"creation role must differ from the database owner." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"These variables allow automated environments to exercise the full upgrade " +"and extension install paths without promoting the calling account to " +"superuser, provided the target PostgreSQL instance permits extension " +"installation by those delegate roles." +msgstr "" + #. Tag: para #, no-c-format msgid "" @@ -7085,11 +7171,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The address_standardizer extension used to be a separate " -"package that required separate download. From PostGIS 2.2 on, it is now " -"bundled in. For more information about the address_standardize, what it " -"does, and how to configure it for your needs, refer to ." +"The address_standardizer extension is bundled with PostGIS. For " +"more information about the address_standardizer, what it does, and how to " +"configure it for your needs, refer to ." msgstr "" #. Tag: para @@ -7119,9 +7204,8 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"For Windows users, the PostGIS 2.1+ bundle is packaged with the " -"address_standardizer already so no need to compile and can move straight to " -"CREATE EXTENSION step." +"Windows installation packages include the address_standardizer so you can " +"move straight to the CREATE EXTENSION step." msgstr "" #. Tag: para @@ -7238,11 +7322,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"As of PostGIS 2.4.1 the Zip code-5 digit tabulation area zcta5 load step was revised to load current zcta5 data and is part of the " -" when enabled. It is turned " -"off by default because it takes quite a bit of time to load (20 to 60 " -"minutes), takes up quite a bit of disk space, and is not used that often." +"The Zip code-5 digit tabulation area zcta5 load step uses " +"current ZCTA data and is part of the when enabled. It is turned off " +"by default because it takes quite a bit of time to load (20 to 60 minutes), " +"takes up quite a bit of disk space, and is not used that often." msgstr "" #. Tag: para @@ -7781,6 +7865,16 @@ msgstr "" msgid "Geometry Processing, PostgreSQL gist, general bug fixing" msgstr "" +#. Tag: term +#, no-c-format +msgid "Lauren?iu Nicola" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Bug fixes, maintenance, stability, and performance" +msgstr "" + #. Tag: title #, no-c-format msgid "Core Contributors Past" @@ -8294,7 +8388,7 @@ msgstr "" #. Tag: member #, no-c-format -msgid "Lauren?iu Nicola" +msgid "Lauren?iu Nicola" msgstr "" #. Tag: member @@ -8841,9 +8935,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"PostGIS 2.0.0 was the first release we tried this strategy. We used PledgeBank and we got two " -"successful campaigns out of it." +"PostGIS has experimented with community fundraising for features in the " +"past. We used PledgeBank and we got two successful campaigns out of it." msgstr "" #. Tag: para @@ -8920,13 +9014,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"Current PostgreSQL versions (including 9.6) suffer from a query optimizer " -"weakness regarding TOAST tables. TOAST tables are a kind of \"extension " -"room\" used to store large (in the sense of data size) values that do not " -"fit into normal data pages (like long texts, images or complex geometries " -"with lots of vertices), see the PostgreSQL Documentation for " -"TOAST for more information)." +"Current PostgreSQL versions suffer from a query optimizer weakness regarding " +"TOAST tables. TOAST tables are a kind of \"extension room\" used to store " +"large (in the sense of data size) values that do not fit into normal data " +"pages (like long texts, images or complex geometries with lots of vertices), " +"see the PostgreSQL Documentation for TOAST for more " +"information)." msgstr "" #. Tag: para @@ -9508,6 +9602,15 @@ msgstr "" msgid "Geometry Accessors" msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"These functions expose structural information about an existing geometry " +"without changing it. They provide access to metadata such as geometry type, " +"dimensionality, or coordinate components so that spatial expressions can " +"interrogate complex objects in a controlled way." +msgstr "" + #. Tag: refpurpose #, no-c-format msgid "Returns the type of a geometry as text." @@ -9944,7 +10047,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"This only works for POLYGON geometries. It does not work for MULTIPOLYGONS" +"This only works for POLYGON geometries, not MULTIPOLYGONs. Use to extract polygon elements from polygonal geometries: " +"ST_DumpRings( (ST_Dump(geom)).geom )" msgstr "" #. Tag: para @@ -9954,12 +10059,12 @@ msgstr "" #. Tag: para #, no-c-format -msgid "General form of query." +msgid "Extracting all rings as polygons." msgstr "" #. Tag: para #, no-c-format -msgid "A polygon with a single hole." +msgid "Extracting shell and holes from a polygon." msgstr "" #. Tag: para @@ -11455,8 +11560,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -", , , , " +", , , , , , " msgstr "" #. Tag: refpurpose @@ -11497,7 +11603,8 @@ msgstr "" #, no-c-format msgid "" ", , , , " +"linkend=\"ST_ZMin\"/>, , , " msgstr "" #. Tag: refpurpose @@ -11517,8 +11624,9 @@ msgstr "" #, no-c-format msgid "" ", , , , , " +"linkend=\"ST_YMax\"/>, , , , " msgstr "" #. Tag: refpurpose @@ -11538,8 +11646,9 @@ msgstr "" #, no-c-format msgid "" ", , , , , " +"linkend=\"ST_YMin\"/>, , , , " msgstr "" #. Tag: refpurpose @@ -11559,8 +11668,36 @@ msgstr "" #, no-c-format msgid "" ", , , , , , " +"linkend=\"ST_XMax\"/>, , , , , " +msgstr "" + +#. Tag: refpurpose +#, no-c-format +msgid "Returns the M minima of a geometry." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"Returns the M minima of a geometry, or null of the geometry lacks M values." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +", , , , , , " +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +", , , , , , " msgstr "" #. Tag: title @@ -11849,6 +11986,14 @@ msgstr "" msgid "Geometry Constructors" msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"These functions instantiate new geometry or geography values. They assemble " +"primitives, coordinate sequences, or existing geometries into well-formed " +"spatial objects that can participate in subsequent analysis." +msgstr "" + #. Tag: refpurpose #, no-c-format msgid "" @@ -12052,8 +12197,16 @@ msgstr "" msgid "" "Repeated nodes at the beginning of input LineStrings are collapsed to a " "single point. Repeated points in Point and MultiPoint inputs are not " -"collapsed. can be used to " -"collapse repeated points from the output LineString." +"collapsed. Components of MultiLineString are handled in the order they " +"appear in the collection. can be " +"used to collapse repeated points from the output LineString." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"Availability: 3.7.0 - Support for MultiLineString input elements was " +"introduced" msgstr "" #. Tag: para @@ -12133,8 +12286,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"Prior to PostgreSQL 9, ordering in a subquery can be used. However, " -"sometimes the query plan may not respect the order of the subquery." +"When ordering within the aggregate is not possible, ordering in a subquery " +"can be used. However, sometimes the query plan may not respect the order of " +"the subquery." msgstr "" #. Tag: para @@ -12956,6 +13110,132 @@ msgid "" ">, " msgstr "" +#. Tag: refpurpose +#, no-c-format +msgid "" +"Computes a clean (edge matched, non-overlapping, gap-cleared) polygonal " +"coverage, given a non-clean input." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"A window function which adjusts the edges of a set of valid polygonal " +"geometries to produce a clean coverage. Cleaning involves:" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"snapping vertices and edges to remove small discrepancies and ensure common " +"edges are identically noded" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "merging overlaps into a parent polygon" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "merging narrow gaps into adjacent polygons" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"gapMaximumWidth controls which gaps between polygons " +"are merged. Gaps with width <= this distance are merged into an adjacent " +"polygon." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"snappingDistance controls snapping of vertices and " +"edges. The default (-1) automatically determines a snapping distance based " +"on the input extent. Set to 0.0 to turn off snapping." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"overlapMergeStrategy specifies how overlaps are " +"merged into a parent polygon:" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"MERGE_LONGEST_BORDER - merges into polygon with longest common " +"border" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "MERGE_MAX_AREA - merges into polygon with maximum area" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "MERGE_MIN_AREA - merges into polygon with minimum area" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"MERGE_MIN_INDEX - merges into polygon with smallest input index " +"(defined by order of input polygons)" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"The result is a clean polygonal coverage that will pass validation by and can be input to coverage " +"processing functions." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"To aid in determining a maximum gap width, gaps can be computed by cleaning " +"with gapMaximumWidth => 0 and using to union the result coverage. Holes in the " +"union correspond to gaps in the original dataset. Gap widths can be measured " +"by extracting the holes as polygons and running on them; the gap width is twice the " +"computed radius." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Availability: 3.6.0 - requires GEOS >= 3.14.0" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Polygons with overlaps and gaps" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Invalid coverage edges" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "Clean polygonal coverage, with overlaps and narrow gaps removed" +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +", , , " +msgstr "" + #. Tag: refpurpose #, no-c-format msgid "Window function that simplifies the edges of a polygonal coverage." @@ -13055,77 +13335,6 @@ msgid "" "linkend=\"ST_CoverageClean\"/>, " msgstr "" -#. Tag: refpurpose -#, no-c-format -msgid "" -"Computes a clean (edge matched, non-overlapping, gap-cleared) polygonal " -"coverage, given a non-clean input." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"A window function which alters the edges of a polygonal coverage to ensure " -"that none of the polygons overlap, that small gaps are snapped away, and " -"that all shared edges are exactly identical. The result is a clean coverage " -"that will pass validation tests like " -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"The gapMaximumWidth controls the cleaning of gaps " -"between polygons. Gaps smaller than this tolerance will be closed." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"The snappingDistance controls the node snapping step, " -"when nearby vertices are snapped together. The default setting (-1) applies " -"an automatic snapping distance based on an analysis of the input. Set to 0.0 " -"to turn off all snapping." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"The overlapMergeStrategy controls the algorithm used " -"to determine which neighboring polygons to merge overlapping areas into." -msgstr "" - -#. Tag: para -#, no-c-format -msgid "" -"MERGE_LONGEST_BORDER chooses polygon with longest common border" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "MERGE_MAX_AREA chooses polygon with maximum area" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "MERGE_MIN_AREA chooses polygon with minimum area" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "MERGE_MIN_INDEX chooses polygon with smallest input index" -msgstr "" - -#. Tag: para -#, no-c-format -msgid "Availability: 3.6.0 - requires GEOS >= 3.14.0" -msgstr "" - -#. Tag: para -#, no-c-format -msgid ", " -msgstr "" - #. Tag: title #, no-c-format msgid "Geometry Editors" @@ -14587,9 +14796,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"These functions are rarely used functions that should only be used if your " -"data is corrupted in someway. They are used for troubleshooting corruption " -"and also fixing things that should under normal circumstances, never happen." +"These routines are reserved for diagnosing and repairing data corruption. " +"They provide last-resort maintenance operations that are not required during " +"normal spatial workflows." msgstr "" #. Tag: refpurpose @@ -15528,11 +15737,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"In PostgreSQL 9.1+ - standard_conforming_strings is set to on by default, " -"where as in past versions it was set to off. You can change defaults as " -"needed for a single query or at the database or server level. Below is how " -"you would do it with standard_conforming_strings = on. In this case we " -"escape the ' with standard ansi ', but slashes are not escaped" +"In PostgreSQL, standard_conforming_strings is set to on by default. You can " +"change the default as needed for a single query or at the database or server " +"level. Below is how you would do it with standard_conforming_strings = on. " +"In this case we escape the ' with standard ANSI ', but slashes are not " +"escaped" msgstr "" #. Tag: para @@ -16111,6 +16320,15 @@ msgstr "" msgid "Linear Referencing" msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"These functions measure and locate events along linear features. They " +"support the classic linear referencing workflow of expressing positions as " +"fractions or measures along routes and of projecting those measures back " +"into spatial coordinates." +msgstr "" + #. Tag: refpurpose #, no-c-format msgid "Returns a point interpolated along a line at a fractional location." @@ -17503,10 +17721,10 @@ msgstr "" #, no-c-format msgid "" "For geography types: computation is performed using the inverse geodesic " -"calculation. Units of length are in meters. If PostGIS is compiled with PROJ " -"version 4.8.0 or later, the spheroid is specified by the SRID, otherwise it " -"is exclusive to WGS84. If use_spheroid = false, then the " -"calculation is based on a sphere instead of a spheroid." +"calculation. Units of length are in meters. The spheroid is specified by the " +"SRID; when no SRID is provided, WGS84 is used. If use_spheroid = " +"false, then the calculation is based on a sphere instead of a " +"spheroid." msgstr "" #. Tag: para @@ -17910,10 +18128,10 @@ msgstr "" #, no-c-format msgid "" "For geography types, the calculations are performed using the inverse " -"geodesic problem, where perimeter units are in meters. If PostGIS is " -"compiled with PROJ version 4.8.0 or later, the spheroid is specified by the " -"SRID, otherwise it is exclusive to WGS84. If use_spheroid = false, then calculations will approximate a sphere instead of a spheroid." +"geodesic problem, where perimeter units are in meters. The spheroid is " +"specified by the SRID; when no SRID is provided, WGS84 is used. If " +"use_spheroid = false, then calculations will approximate " +"a sphere instead of a spheroid." msgstr "" #. Tag: para @@ -18091,6 +18309,16 @@ msgstr "" msgid "Operators" msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"These entries document the spatial operators defined by PostGIS. Operators " +"complement the function catalogue by supplying concise symbolic predicates " +"for bounding-box interactions and spatial relationships. Their semantics " +"follow the same geometric rules as the corresponding functions but are " +"optimised for use in SQL expressions and index-supported filtering." +msgstr "" + #. Tag: title #, no-c-format msgid "Bounding Box Operators" @@ -18160,8 +18388,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"Availability: 2.3.0 support for Block Range INdexes (BRIN) was introduced. " -"Requires PostgreSQL 9.5+." +"Availability: 2.3.0 support for Block Range INdexes (BRIN) was introduced." msgstr "" #. Tag: para @@ -18785,10 +19012,8 @@ msgstr "" msgid "" "The <-> operator returns the 2D distance between " "two geometries. Used in the \"ORDER BY\" clause provides index-assisted " -"nearest-neighbor result sets. For PostgreSQL below 9.5 only gives centroid " -"distance of bounding boxes and for PostgreSQL 9.5+, does true KNN distance " -"search giving true distance between geometries, and distance sphere for " -"geographies." +"nearest-neighbor result sets with true KNN distance search for geometries, " +"and distance on the sphere for geographies." msgstr "" #. Tag: para @@ -18820,17 +19045,15 @@ msgstr "" #, no-c-format msgid "" "Enhanced: 2.2.0 -- True KNN (\"K nearest neighbor\") behavior for geometry " -"and geography for PostgreSQL 9.5+. Note for geography KNN is based on sphere " -"rather than spheroid. For PostgreSQL 9.4 and below, geography support is new " -"but only supports centroid box." +"and geography. Note for geography KNN is based on sphere rather than " +"spheroid." msgstr "" #. Tag: para #, no-c-format msgid "" -"Changed: 2.2.0 -- For PostgreSQL 9.5 users, old Hybrid syntax may be slower, " -"so you'll want to get rid of that hack if you are running your code only on " -"PostGIS 2.2+ 9.5+. See examples below." +"Changed: 2.2.0 -- Old hybrid-syntax workarounds may be slower once true KNN " +"is available. See examples below." msgstr "" #. Tag: para @@ -18838,7 +19061,7 @@ msgstr "" msgid "" "Availability: 2.0.0 -- Weak KNN provides nearest neighbors based on geometry " "centroid distances instead of true distances. Exact results for points, " -"inexact for all other types. Available for PostgreSQL 9.1+" +"inexact for all other types." msgstr "" #. Tag: para @@ -18856,9 +19079,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"For users running with PostgreSQL < 9.5, use a hybrid query to find the " -"true nearest neighbors. First a CTE query using the index-assisted KNN, then " -"an exact query to get correct ordering:" +"When a plan cannot produce exact distances directly, use a hybrid query to " +"find the true nearest neighbors. First a CTE query using the index-assisted " +"KNN, then an exact query to get correct ordering:" msgstr "" #. Tag: para @@ -18880,8 +19103,7 @@ msgid "" "The |=| operator returns the 3D distance between two " "trajectories (See ). This is the " "same as but as an operator it can be used " -"for doing nearest neighbor searches using an N-dimensional index (requires " -"PostgreSQL 9.5.0 or higher)." +"for doing nearest neighbor searches using an N-dimensional index." msgstr "" #. Tag: para @@ -18903,7 +19125,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "Availability: 2.2.0. Index-supported only available for PostgreSQL 9.5+" +msgid "Availability: 2.2.0." msgstr "" #. Tag: para @@ -18922,9 +19144,9 @@ msgstr "" #, no-c-format msgid "" "The <#> operator returns distance between two " -"floating point bounding boxes, possibly reading them from a spatial index " -"(PostgreSQL 9.1+ required). Useful for doing nearest neighbor approximate distance ordering." +"floating point bounding boxes, possibly reading them from a spatial index. " +"Useful for doing nearest neighbor approximate distance ordering." msgstr "" #. Tag: para @@ -18945,7 +19167,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "Availability: 2.0.0 -- KNN only available for PostgreSQL 9.1+" +msgid "Availability: 2.0.0." msgstr "" #. Tag: para @@ -18978,11 +19200,6 @@ msgid "" "clause." msgstr "" -#. Tag: para -#, no-c-format -msgid "Availability: 2.2.0 -- KNN only available for PostgreSQL 9.1+" -msgstr "" - #. Tag: title #, no-c-format msgid "Geometry Output" @@ -19179,9 +19396,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The default behavior in PostgreSQL 9.0 has been changed to output bytea in " -"hex encoding. If your GUI tools require the old behavior, then SET " -"bytea_output='escape' in your database." +"PostgreSQL outputs bytea values in hex encoding by " +"default. If your GUI tools require the old behavior, then SET " +"bytea_output='escape' in your database." msgstr "" #. Tag: para @@ -19447,6 +19664,15 @@ msgid "" "end up inside the feature?s \"properties\" member." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"When the input record includes duplicate column names, the resulting " +"\"properties\" object will contain repeated keys. ST_AsGeoJSON raises a warning in that case because PostgreSQL jsonb keeps only the last value for duplicate keys." +msgstr "" + #. Tag: para #, no-c-format msgid "" @@ -19506,6 +19732,11 @@ msgstr "" msgid "Changed: 3.5.0 allow specifying the column containing the feature id" msgstr "" +#. Tag: para +#, no-c-format +msgid "Changed: 3.7.0 added warning about duplicate keys" +msgstr "" + #. Tag: para #, no-c-format msgid "Generate a FeatureCollection:" @@ -20244,11 +20475,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"The 'options' argument is a bitfield. For PostGIS 2.2+, this is used to " -"denote whether to represent coordinates with X3D GeoCoordinates Geospatial " -"node and also whether to flip the x/y axis. By default, ST_AsX3D outputs in database form (long,lat or X,Y), but X3D default of lat/" -"lon, y/x may be preferred." +"The 'options' argument is a bitfield that denotes whether to represent " +"coordinates with the X3D GeoCoordinates geospatial node and whether to flip " +"the x/y axis. By default, ST_AsX3D outputs in database form " +"(long,lat or X,Y), but the X3D default of lat/lon, y/x may be preferred." msgstr "" #. Tag: para @@ -20943,6 +21173,18 @@ msgid "" "operations executed by the index recheck process fewer points." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"When casting a subdivided geometry to geography, the resulting geography may " +"differ from the original. Subdivision adds vertices in planar (geometry) " +"space. If vertices are inserted along the boundary, they will alter the " +"geographical representation, where edges are interpreted as geodesic " +"segments. To minimize distortion, first densify the geography using to add geodesic vertices, then cast to geometry " +"before subdivision." +msgstr "" + #. Tag: para #, no-c-format msgid "" @@ -20977,7 +21219,9 @@ msgstr "" msgid "" "Example: Densify a long geography line " "using ST_Segmentize(geography, distance), and use ST_Subdivide to split the " -"resulting line into sublines of 8 vertices." +"resulting line into sublines of 8 vertices. Densification minimizes the " +"impact of changes to the geography representation of a geometry when " +"subdividing." msgstr "" #. Tag: para @@ -21293,10 +21537,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"'side=both|left|right' : 'left' or 'right' performs a single-sided buffer on " -"the geometry, with the buffered side relative to the direction of the line. " -"This is only applicable to LINESTRING geometry and does not affect POINT or " -"POLYGON geometries. By default end caps are square." +"'side=both|left|right' : defaults to 'both'. 'left' or 'right' performs a " +"single-sided buffer on the geometry, with the buffered side relative to the " +"direction of the line. This is only applicable to LINESTRING geometry and " +"does not affect POINT or POLYGON geometries. By default end caps are square " +"when 'left' or 'right' are specified." msgstr "" #. Tag: para @@ -22073,9 +22318,19 @@ msgstr "" msgid "This function strips the M dimension." msgstr "" +#. Tag: title +#, no-c-format +msgid "Cardinality 2" +msgstr "" + #. Tag: para #, no-c-format -msgid "Merging lines with different orientation." +msgid "Nodes with cardinality 2 are merged away." +msgstr "" + +#. Tag: title +#, no-c-format +msgid "Cardinality 3 or More" msgstr "" #. Tag: para @@ -22083,6 +22338,11 @@ msgstr "" msgid "Lines are not merged across intersections with degree > 2." msgstr "" +#. Tag: title +#, no-c-format +msgid "Non-Touching Lines" +msgstr "" + #. Tag: para #, no-c-format msgid "" @@ -22090,14 +22350,19 @@ msgid "" "MultiLineString is returned." msgstr "" +#. Tag: title +#, no-c-format +msgid "Directed Parameter" +msgstr "" + #. Tag: para #, no-c-format msgid "Lines with opposite directions are not merged if directed = TRUE." msgstr "" -#. Tag: para +#. Tag: title #, no-c-format -msgid "Example showing Z-dimension handling." +msgid "Z-dimension Handling" msgstr "" #. Tag: para @@ -24718,9 +24983,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "" -"From PostGIS 2.0+ the srid of a non-georeferenced raster/geometry is 0 " -"instead of the prior -1." +msgid "Non-georeferenced rasters and geometries use SRID 0." msgstr "" #. Tag: refpurpose @@ -26214,12 +26477,12 @@ msgstr "" #, no-c-format msgid "" "If you find your transformation support is not working right, you may need " -"to set the environment variable PROJSO to the .so or .dll projection library " -"your PostGIS is using. This just needs to have the name of the file. So for " +"to set the environment variable PROJSO to the projection library your " +"PostGIS build is using. This just needs to have the name of the file. So for " "example on windows, you would in Control Panel -> System -> " "Environment Variables add a system variable called PROJSO " -"and set it to libproj.dll (if you are using proj 4.6.1). " -"You'll have to restart your PostgreSQL service/daemon after this change." +"and set it to libproj.dll. You'll have to restart your " +"PostgreSQL service/daemon after this change." msgstr "" #. Tag: para @@ -27734,16 +27997,14 @@ msgstr "" #. Tag: para #, no-c-format -msgid "" -"Complete example of tiles of a coverage with neighborhood. This query only " -"works with PostgreSQL 9.1 or higher." +msgid "Complete example of tiles of a coverage with neighborhood." msgstr "" #. Tag: para #, no-c-format msgid "" "Example like the prior one for tiles of a coverage with neighborhood but " -"works with PostgreSQL 9.0." +"using only basic SQL features." msgstr "" #. Tag: title @@ -28999,9 +29260,7 @@ msgstr "" #. Tag: para #, no-c-format -msgid "" -"Complete example of tiles of a coverage. This query only works with " -"PostgreSQL 9.1 or higher." +msgid "Complete example of tiles of a coverage." msgstr "" #. Tag: para @@ -29449,6 +29708,13 @@ msgid "" "result invalid geometries." msgstr "" +#. Tag: para +#, no-c-format +msgid "" +"Changed 3.7.0, the polygonization honours PostgreSQL interrupts so " +"cancellations and statement timeouts halt processing promptly." +msgstr "" + #. Tag: para #, no-c-format msgid "Availability: Requires GDAL 1.7 or higher." @@ -34745,9 +35011,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"\"linework\" is the original algorithm, and builds valid geometries by first " +"\"linework\" is the default algorithm, and builds valid geometries by first " "extracting all lines, noding that linework together, then building a value " -"output from the linework." +"output from the linework. The requirement that no vertices are lost can " +"generate complex collections as outputs." msgstr "" #. Tag: para @@ -34755,16 +35022,30 @@ msgstr "" msgid "" "\"structure\" is an algorithm that distinguishes between interior and " "exterior rings, building new geometry by unioning exterior rings, and then " -"differencing all interior rings." +"differencing all interior rings. The results tend to be more intuitive, " +"where collapsed lines are discarded in the output." msgstr "" #. Tag: para #, no-c-format msgid "" "The \"keepcollapsed\" key is only valid for the \"structure\" algorithm, and " -"takes a value of \"true\" or \"false\". When set to \"false\", geometry " +"takes a value of \"true\" or \"false\"." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"Keep collapsed of \"false\" is the default, and means that geometry " "components that collapse to a lower dimensionality, for example a one-point " -"linestring would be dropped." +"linestring will be dropped." +msgstr "" + +#. Tag: para +#, no-c-format +msgid "" +"Keep collapsed of \"true\" means geometry components that collapse to a " +"lower dimensionality will be retained." msgstr "" #. Tag: para @@ -36391,9 +36672,8 @@ msgid "" "Like the geometry data type, geography data is associated with a spatial " "reference system via a spatial reference system identifier (SRID). Any " "geodetic (long/lat based) spatial reference system defined in the " -"spatial_ref_sys table can be used. (Prior to PostGIS 2.2, " -"the geography type supported only WGS 84 geodetic (SRID:4326)). You can add " -"your own custom geodetic spatial reference system as described in spatial_ref_sys table can be used. You can add your own " +"custom geodetic spatial reference system as described in ." msgstr "" @@ -38091,9 +38371,9 @@ msgstr "" #, no-c-format msgid "" "BRIN stands for \"Block Range Index\". It is a general-purpose index method " -"introduced in PostgreSQL 9.5. BRIN is a lossy index " -"method, meaning that a secondary check is required to confirm that a record " -"matches a given search condition (which is the case for all provided spatial " +"provided by PostgreSQL. BRIN is a lossy index method, " +"meaning that a secondary check is required to confirm that a record matches " +"a given search condition (which is the case for all provided spatial " "indexes). It provides much faster index creation and much smaller index " "size, with reasonable read performance. Its primary purpose is to support " "indexing very large tables on columns which have a correlation with their " ----------------------------------------------------------------------- Summary of changes: doc/po/templates/postgis-manual.pot | 1034 ++++++++++++++++++++++------------- 1 file changed, 657 insertions(+), 377 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Nov 13 10:12:48 2025 From: trac at osgeo.org (PostGIS) Date: Thu, 13 Nov 2025 18:12:48 -0000 Subject: [PostGIS] Batch modify: #5948, #6010 In-Reply-To: <049.f44d7dfbbcc36310dff5b4ab8e0ea34f@osgeo.org> References: <049.f44d7dfbbcc36310dff5b4ab8e0ea34f@osgeo.org> Message-ID: <042.128b6878e848290746e684c1ac8fcd66@osgeo.org> Batch modification to #5948, #6010 by pramsey: milestone to PostGIS 3.6.2 Comment: Ticket retargeted after milestone closed -- Tickets URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Nov 13 10:30:02 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 10:30:02 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.0-32-gf53362350 Message-ID: <20251113183002.9D511196F68@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via f533623505f73939a2d25d66ff252fb6619c4ac7 (commit) from 6a16232cb57a202d0e1407fedb6f59ede0a354ec (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f533623505f73939a2d25d66ff252fb6619c4ac7 Author: Paul Ramsey Date: Thu Nov 13 10:29:54 2025 -0800 Prepare for 3.6.1 release diff --git a/.gitignore b/.gitignore index f9d05e3ca..f8b019f67 100644 --- a/.gitignore +++ b/.gitignore @@ -128,6 +128,7 @@ macros/ltversion.m4 *.o postgis_config.h postgis/Makefile +postgis/cunit/Makefile postgis/geobuf.pb-c.c postgis/geobuf.pb-c.h postgis/legacy_gist.sql diff --git a/NEWS b/NEWS index 2a2fd08da..76662826a 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ PostGIS 3.6.1 -2025/11/xx +2025/11/13 This version requires PostgreSQL 12-18, GEOS 3.8 or higher, and Proj 6.1+. To take advantage of all features, GEOS 3.14+ is needed. @@ -21,14 +21,15 @@ SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_co - #5998, ST_Distance error on CurvePolygon (Paul Ramsey) - #5962, Consistent clipping of MULTI/POINT (Paul Ramsey) - #5998, [tiger_geocoder] [security] CVE-2022-2625, make sure tables requires - by extension are owned by extension - authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) + by extension are owned by extension + authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) - - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + - #5959, #5984, Prevent histogram target overflow when analysing massive + tables (Darafei Praliaskouski) - #6012, Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) - #6013, [tiger_geocoder] Load Tiger 2025 data (Regina Obe) - #5983, [topology] topology.FixCorruptTopoGeometryColumn - to fix corruption caused by 3.6.0 upgrade (Regina Obe, Francois Bonzon) + to fix corruption caused by 3.6.0 upgrade (Regina Obe, Francois Bonzon) PostGIS 3.6.0 diff --git a/README.postgis b/README.postgis index 009525190..bdd39454c 100644 --- a/README.postgis +++ b/README.postgis @@ -1,8 +1,8 @@ PostGIS - Geographic Information Systems Extensions to PostgreSQL ================================================================= -:Version: 3.6.0 -:Date: 2025-09-01 +:Version: 3.6.1 +:Date: 2025-11-13 :Website: https://postgis.net This distribution contains a module which implements GIS simple features, ties diff --git a/Version.config b/Version.config index 28fc88d89..e32cb25c4 100644 --- a/Version.config +++ b/Version.config @@ -5,7 +5,7 @@ POSTGIS_MAJOR_VERSION=3 POSTGIS_MINOR_VERSION=6 -POSTGIS_MICRO_VERSION=1dev +POSTGIS_MICRO_VERSION=1 # Liblwgeom interface versioning, reset to 0:0:0 (cur:age:rev) # when changing POSTGIS_MINOR_VERSION diff --git a/doc/release_notes.xml b/doc/release_notes.xml index 68fa8bc79..bf8a795de 100644 --- a/doc/release_notes.xml +++ b/doc/release_notes.xml @@ -2,6 +2,30 @@ Appendix Release Notes + +
+ PostGIS 3.6.1 + 2025/11/13 + + If you are upgrading postgis_topology and have topogeometry columns, make sure to run after the upgrade to fix topogeometry corruption: SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) FROM topology.layer + + + Fixes + #5978, geometry_columns needs to still parse table constraints (Paul Ramsey) + #5987, ST_GeometryN fails for non-collections (Paul Ramsey) + #5991, CircularString distance error (Paul Ramsey) + #5994, Null pointer in ST_AsGeoJsonRow (Alexander Kukushkin) + #5998, ST_Distance error on CurvePolygon (Paul Ramsey) + #5962, Consistent clipping of MULTI/POINT (Paul Ramsey) + #5998, [tiger_geocoder] [security] CVE-2022-2625, make sure tables requires by extension are owned by extension authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) + #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) + #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + #6012, Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) + #6013, [tiger_geocoder] Load Tiger 2025 data (Regina Obe) + #5983, [topology] topology.FixCorruptTopoGeometryColumn to fix corruption caused by 3.6.0 upgrade (Regina Obe, Francois Bonzon) + +
+
PostGIS 3.6.0 2025/09/01 diff --git a/extensions/upgradeable_versions.mk b/extensions/upgradeable_versions.mk index 044c5ae78..045f94bc0 100644 --- a/extensions/upgradeable_versions.mk +++ b/extensions/upgradeable_versions.mk @@ -112,4 +112,5 @@ UPGRADEABLE_VERSIONS = \ 3.5.1 \ 3.5.2 \ 3.5.3 \ - 3.6.0 + 3.6.0 \ + 3.6.1dev ----------------------------------------------------------------------- Summary of changes: .gitignore | 1 + NEWS | 11 ++++++----- README.postgis | 4 ++-- Version.config | 2 +- doc/release_notes.xml | 24 ++++++++++++++++++++++++ extensions/upgradeable_versions.mk | 3 ++- 6 files changed, 36 insertions(+), 9 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 13 20:07:33 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 20:07:33 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-162-gf30ada1 Message-ID: <20251114040734.661261979C2@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via f30ada1c640553dac5282a2a08d550c708357c5d (commit) from a3b679ec3d4de7698794b9005b825192e6bb5137 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f30ada1c640553dac5282a2a08d550c708357c5d Author: Paul Ramsey Date: Thu Nov 13 20:06:34 2025 -0800 Release 3.6.1 diff --git a/config.toml b/config.toml index cb5643c..671a818 100644 --- a/config.toml +++ b/config.toml @@ -154,7 +154,7 @@ enableRobotsTXT = true [params.postgis] - version = "3.6.0" + version = "3.6.1" release_docs = "https://download.osgeo.org/postgis/docs" release_source = "https://download.osgeo.org/postgis/source" release_notes = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag" @@ -170,8 +170,8 @@ enableRobotsTXT = true is_dev = true [params.postgis.releases.36] minor = "3.6" - dev = "3.6.1dev" - tag = "3.6.0" + dev = "3.6.2dev" + tag = "3.6.1" [params.postgis.releases.35] minor = "3.5" dev = "3.5.5dev" diff --git a/content/news/2025/11-13_postgis-3.6.1.md b/content/news/2025/11-13_postgis-3.6.1.md new file mode 100644 index 0000000..c24c4dc --- /dev/null +++ b/content/news/2025/11-13_postgis-3.6.1.md @@ -0,0 +1,76 @@ +--- +title: PostGIS 3.6.1 +layout: post +category: news +tags: [release, 3.6] +author: Paul Ramsey +thumbnail: +date: "2025-11-12" +--- + +The PostGIS Team is pleased to publish PostGIS 3.6.1. This is a bug fix release that includes bug fixes since PostGIS 3.6.0. + +* This version requires PostgreSQL 12 - 18, Proj 6.1+, and GEOS 3.8+. To take advantage of all features, GEOS 3.12+ is needed. +* SFCGAL 1.4+ is needed to enable postgis_sfcgal support. To take advantage of all SFCGAL features, SFCGAL 1.5+ is needed. + +### 3.6.1 + +* [source download]({{< loc "postgis.release_source">}}/postgis-3.6.1.tar.gz) [md5]({{< loc "postgis.dev_download">}}/postgis-3.6.1.tar.gz.md5) +* [NEWS](https://git.osgeo.org/gitea/postgis/postgis/raw/tag/3.6.1/NEWS) +* PDF docs: [en]({{< loc "postgis.release_docs">}}/postgis-3.6.1-en.pdf) + +* HTML Online [en]({{< loc "site.root">}}docs/manual-3.6/en/) [ja]({{< loc "site.root">}}docs/manual-3.6/ja/) [fr]({{< loc "site.root">}}docs/manual-3.6/fr/) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/zh_Hans/) + +* Cheat Sheets: + * postgis: [en]({{< loc "site.root">}}docs/manual-3.6/postgis_cheatsheet-en.html) [ja]({{< loc "site.root">}}docs/manual-3.6/postgis_cheatsheet-ja.html) [fr]({{< loc "site.root">}}docs/manual-3.6/postgis_cheatsheet-fr.html) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/postgis_cheatsheet-zh_Hans.html) + * postgis_raster: [en]({{< loc "site.root">}}docs/manual-3.6/raster_cheatsheet-en.html) [ja]({{< loc "site.root">}}docs/manual-3.6/raster_cheatsheet-ja.html) [fr]({{< loc "site.root">}}docs/manual-3.6/raster_cheatsheet-fr.html) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/raster_cheatsheet-zh_Hans.html) + * postgis_topology: [en]({{< loc "site.root">}}docs/manual-3.6/topology_cheatsheet-en.html) [ja]({{< loc "site.root">}}docs/manual-3.6/topology_cheatsheet-ja.html) [fr]({{< loc "site.root">}}docs/manual-3.6/topology_cheatsheet-fr.html) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/topology_cheatsheet-zh_Hans.html) + * postgis_sfcgal: [en]({{< loc "site.root">}}docs/manual-3.6/sfcgal_cheatsheet-en.html) [ja]({{< loc "site.root">}}docs/manual-3.6/sfcgal_cheatsheet-ja.html) [fr]({{< loc "site.root">}}docs/manual-3.6/sfcgal_cheatsheet-fr.html) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/sfcgal_cheatsheet-zh_Hans.html) + * address standardizer, postgis_tiger_geocoder: [en]({{< loc "site.root">}}docs/manual-3.6/tiger_geocoder_cheatsheet-en.html) [ja]({{< loc "site.root">}}docs/manual-3.6/tiger_geocoder_cheatsheet-ja.html) [fr]({{< loc "site.root">}}docs/manual-3.6/tiger_geocoder_cheatsheet-fr.html) [zh_Hans]({{< loc "site.root">}}docs/manual-3.6/tiger_geocoder_cheatsheet-zh_Hans.html) + + + + + + +### Fixes + +- [#5978](https://trac.osgeo.org/postgis/ticket/5978), geometry_columns needs to still parse table constraints (Paul Ramsey) +- [#5987](https://trac.osgeo.org/postgis/ticket/5987), ST_GeometryN fails for non-collections (Paul Ramsey) +- [#5991](https://trac.osgeo.org/postgis/ticket/5991), CircularString distance error (Paul Ramsey) +- [#5994](https://trac.osgeo.org/postgis/ticket/5994), Null pointer in ST_AsGeoJsonRow (Alexander Kukushkin) +- [#5998](https://trac.osgeo.org/postgis/ticket/5998), ST_Distance error on CurvePolygon (Paul Ramsey) +- [#5962](https://trac.osgeo.org/postgis/ticket/5962), Consistent clipping of MULTI/POINT (Paul Ramsey) +- [#5998](https://trac.osgeo.org/postgis/ticket/5998), [tiger_geocoder] [security] CVE-2022-2625, make sure tables requires by extension are owned by extension authored: Andrey Borodin (Yandex), reported by Sergey Bobrov (Kaspersky) +- [#5754](https://trac.osgeo.org/postgis/ticket/5754), ST_ForcePolygonCCW reverses lines (Paul Ramsey) +- [#5959](https://trac.osgeo.org/postgis/ticket/5959), [#5984](https://trac.osgeo.org/postgis/ticket/5984), Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) +- [#6012](https://trac.osgeo.org/postgis/ticket/6012), Remove memory leak from lwcircstring_from_lwpointarray (Paul Ramsey) +- [#6013](https://trac.osgeo.org/postgis/ticket/6013), [tiger_geocoder] Load Tiger 2025 data (Regina Obe) +- [#5983](https://trac.osgeo.org/postgis/ticket/5983), [topology] topology.FixCorruptTopoGeometryColumn to fix corruption caused by 3.6.0 upgrade (Regina Obe, Francois Bonzon) + + +### Upgrading + +After installing the binaries or after running pg_upgrade: + +For PostGIS 3.0 and higher, do below which will upgrade all your postgis extensions. +```postgres +SELECT postgis_extensions_upgrade(); +``` + +If you are upgrading postgis_topology and have topogeometry columns, make sure to run +after the upgrade to fix topogeometry corruption: + +```postgres +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; +``` + + +### Other Issues + +If you come across any issues, feel free to report via our [ticket tracker](https://trac.osgeo.org/postgis) or [mailing list](https://lists.osgeo.org/listinfo/postgis-users) with details + +View all [tickets for 3.6.1 milestone][1]. + +[1]: https://trac.osgeo.org/postgis/query?status=assigned&status=closed&milestone=PostGIS+3.6.1 ----------------------------------------------------------------------- Summary of changes: config.toml | 6 +-- content/news/2025/11-13_postgis-3.6.1.md | 76 ++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 content/news/2025/11-13_postgis-3.6.1.md hooks/post-receive -- postgis.net From git at osgeo.org Thu Nov 13 20:10:16 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 20:10:16 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-1-gd29a6ac41 Message-ID: <20251114041016.A3C21197E83@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via d29a6ac411737ab13150f6bb4a0c963ead7a377b (commit) from f533623505f73939a2d25d66ff252fb6619c4ac7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d29a6ac411737ab13150f6bb4a0c963ead7a377b Author: Paul Ramsey Date: Thu Nov 13 20:10:11 2025 -0800 Dump to 3.6.2dev diff --git a/Version.config b/Version.config index e32cb25c4..351b77924 100644 --- a/Version.config +++ b/Version.config @@ -5,7 +5,7 @@ POSTGIS_MAJOR_VERSION=3 POSTGIS_MINOR_VERSION=6 -POSTGIS_MICRO_VERSION=1 +POSTGIS_MICRO_VERSION=2dev # Liblwgeom interface versioning, reset to 0:0:0 (cur:age:rev) # when changing POSTGIS_MINOR_VERSION diff --git a/extensions/upgradeable_versions.mk b/extensions/upgradeable_versions.mk index 045f94bc0..1a76aea31 100644 --- a/extensions/upgradeable_versions.mk +++ b/extensions/upgradeable_versions.mk @@ -113,4 +113,4 @@ UPGRADEABLE_VERSIONS = \ 3.5.2 \ 3.5.3 \ 3.6.0 \ - 3.6.1dev + 3.6.1 ----------------------------------------------------------------------- Summary of changes: Version.config | 2 +- extensions/upgradeable_versions.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 13 22:45:16 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 22:45:16 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-163-gb15eee7 Message-ID: <20251114064516.59390197E7F@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via b15eee7a50004f296ab618d4e7a551f37f60387b (commit) from f30ada1c640553dac5282a2a08d550c708357c5d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b15eee7a50004f296ab618d4e7a551f37f60387b Author: Regina Obe Date: Fri Nov 14 01:45:10 2025 -0500 Minor correction on SFCGAL version requirements diff --git a/content/news/2025/11-13_postgis-3.6.1.md b/content/news/2025/11-13_postgis-3.6.1.md index c24c4dc..f2e49fa 100644 --- a/content/news/2025/11-13_postgis-3.6.1.md +++ b/content/news/2025/11-13_postgis-3.6.1.md @@ -11,7 +11,7 @@ date: "2025-11-12" The PostGIS Team is pleased to publish PostGIS 3.6.1. This is a bug fix release that includes bug fixes since PostGIS 3.6.0. * This version requires PostgreSQL 12 - 18, Proj 6.1+, and GEOS 3.8+. To take advantage of all features, GEOS 3.12+ is needed. -* SFCGAL 1.4+ is needed to enable postgis_sfcgal support. To take advantage of all SFCGAL features, SFCGAL 1.5+ is needed. +* SFCGAL 1.4+ is needed to enable postgis_sfcgal support. To take advantage of all SFCGAL features, SFCGAL 2.2+ is needed. ### 3.6.1 ----------------------------------------------------------------------- Summary of changes: content/news/2025/11-13_postgis-3.6.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- postgis.net From git at osgeo.org Thu Nov 13 22:46:36 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 22:46:36 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-203-g956489eec Message-ID: <20251114064636.E6A7E197FAD@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 956489eec3f47a15ff5fb90c2f25b8a6ecae1399 (commit) from 8feec4a09bea258d34fcfc1ca641e7c175950b52 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 956489eec3f47a15ff5fb90c2f25b8a6ecae1399 Author: Regina Obe Date: Fri Nov 14 01:46:31 2025 -0500 Add 3.5.4 and 3.6.1, 3.6.2 dev as upgrade targets diff --git a/extensions/upgradeable_versions.mk b/extensions/upgradeable_versions.mk index 045f94bc0..c6cb58055 100644 --- a/extensions/upgradeable_versions.mk +++ b/extensions/upgradeable_versions.mk @@ -112,5 +112,7 @@ UPGRADEABLE_VERSIONS = \ 3.5.1 \ 3.5.2 \ 3.5.3 \ + 3.5.4 \ 3.6.0 \ - 3.6.1dev + 3.6.1 \ + 3.6.2dev ----------------------------------------------------------------------- Summary of changes: extensions/upgradeable_versions.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Nov 13 22:50:05 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 14 Nov 2025 06:50:05 -0000 Subject: [PostGIS] #6018: Upgrade target from 3.5.4 to 3.6 is missing Message-ID: <046.3607dd9599964659ebb9868127272ff7@osgeo.org> #6018: Upgrade target from 3.5.4 to 3.6 is missing ---------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: assigned Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Keywords: | ---------------------+--------------------------- -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Nov 13 22:55:34 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 13 Nov 2025 22:55:34 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-2-g9244171a2 Message-ID: <20251114065535.0E7861942F0@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 9244171a23f18d832b8bbee76d7fb36fa09a77dd (commit) from d29a6ac411737ab13150f6bb4a0c963ead7a377b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9244171a23f18d832b8bbee76d7fb36fa09a77dd Author: Regina Obe Date: Fri Nov 14 01:55:28 2025 -0500 Add 3.5.4 upgrade path. Closes #6018 for PostGIS 3.6.2 diff --git a/extensions/upgradeable_versions.mk b/extensions/upgradeable_versions.mk index 1a76aea31..718948b71 100644 --- a/extensions/upgradeable_versions.mk +++ b/extensions/upgradeable_versions.mk @@ -112,5 +112,6 @@ UPGRADEABLE_VERSIONS = \ 3.5.1 \ 3.5.2 \ 3.5.3 \ + 3.5.4 \ 3.6.0 \ 3.6.1 ----------------------------------------------------------------------- Summary of changes: extensions/upgradeable_versions.mk | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Nov 13 22:55:39 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 14 Nov 2025 06:55:39 -0000 Subject: [PostGIS] #6018: Upgrade target from 3.5.4 to 3.6 is missing In-Reply-To: <046.3607dd9599964659ebb9868127272ff7@osgeo.org> References: <046.3607dd9599964659ebb9868127272ff7@osgeo.org> Message-ID: <061.b4bb6dddba6748ed7018bde21c74a602@osgeo.org> #6018: Upgrade target from 3.5.4 to 3.6 is missing ----------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Resolution: fixed | Keywords: ----------------------+--------------------------- Changes (by Regina Obe ): * resolution: => fixed * status: assigned => closed Comment: In [changeset:"9244171a23f18d832b8bbee76d7fb36fa09a77dd/git" 9244171/git]: {{{#!CommitTicketReference repository="git" revision="9244171a23f18d832b8bbee76d7fb36fa09a77dd" Add 3.5.4 upgrade path. Closes #6018 for PostGIS 3.6.2 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 13 23:51:35 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 14 Nov 2025 07:51:35 -0000 Subject: [PostGIS] #6019: Remove generated files in distclean target Message-ID: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> #6019: Remove generated files in distclean target ----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: strk Type: patch | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: build | Version: 3.6.x Keywords: | ----------------------------+--------------------------- The Debian package failed to build twice because `postgis/cunit/Makefile` is generated by `configure` but not removed. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Nov 13 23:51:45 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 14 Nov 2025 07:51:45 -0000 Subject: [PostGIS] #6019: Remove generated files in distclean target In-Reply-To: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> References: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> Message-ID: <065.55b296ca815c283ed28c7852946c0c46@osgeo.org> #6019: Remove generated files in distclean target -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: strk Type: patch | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: build | Version: 3.6.x Resolution: | Keywords: -----------------------------+--------------------------- Changes (by Bas Couwenberg): * Attachment "clean.patch" added. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 14 23:49:08 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 14 Nov 2025 23:49:08 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-3-g6eb81a1c1 Message-ID: <20251115074908.E525A19DAEA@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 6eb81a1c1648fd64269738b52402c8ae9e5492e0 (commit) from 9244171a23f18d832b8bbee76d7fb36fa09a77dd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6eb81a1c1648fd64269738b52402c8ae9e5492e0 Author: Regina Obe Date: Sat Nov 15 02:48:59 2025 -0500 Force order of results of fix topogeometry test diff --git a/topology/test/regress/fix_topogeometry_columns.sql b/topology/test/regress/fix_topogeometry_columns.sql index 725e36375..dd3454db8 100644 --- a/topology/test/regress/fix_topogeometry_columns.sql +++ b/topology/test/regress/fix_topogeometry_columns.sql @@ -5,7 +5,8 @@ set client_min_messages to WARNING; \i ../more_features.sql \i ../hierarchy.sql SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) -FROM topology.layer; +FROM topology.layer +ORDER BY schema_name, table_name, feature_column; SELECT topology.DropTopology('city_data'); DROP SCHEMA features CASCADE; diff --git a/topology/test/regress/fix_topogeometry_columns_expected b/topology/test/regress/fix_topogeometry_columns_expected index 3652720d1..c17525cc7 100644 --- a/topology/test/regress/fix_topogeometry_columns_expected +++ b/topology/test/regress/fix_topogeometry_columns_expected @@ -1,7 +1,7 @@ +0 rows updated for features.big_parcels.feature column to bigint id type +0 rows updated for features.big_signs.feature column to bigint id type +0 rows updated for features.big_streets.feature column to bigint id type +0 rows updated for features.city_streets.feature column to bigint id type 0 rows updated for features.land_parcels.feature column to bigint id type 0 rows updated for features.traffic_signs.feature column to bigint id type -0 rows updated for features.city_streets.feature column to bigint id type -0 rows updated for features.big_parcels.feature column to bigint id type -0 rows updated for features.big_streets.feature column to bigint id type -0 rows updated for features.big_signs.feature column to bigint id type Topology 'city_data' dropped ----------------------------------------------------------------------- Summary of changes: topology/test/regress/fix_topogeometry_columns.sql | 3 ++- topology/test/regress/fix_topogeometry_columns_expected | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 15 11:45:41 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 15 Nov 2025 19:45:41 -0000 Subject: [PostGIS] #6019: Remove generated files in distclean target In-Reply-To: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> References: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> Message-ID: <065.c12b918b3c1682efe26ef24eb4347223@osgeo.org> #6019: Remove generated files in distclean target -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: robe Type: patch | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: build | Version: 3.6.x Resolution: | Keywords: -----------------------------+--------------------------- Changes (by robe): * owner: strk => robe -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 15 11:51:33 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 15 Nov 2025 11:51:33 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-4-gc615e151d Message-ID: <20251115195133.6FB2F16AD35@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via c615e151d0f02f6f0d469255188d35cf09fb4689 (commit) from 6eb81a1c1648fd64269738b52402c8ae9e5492e0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c615e151d0f02f6f0d469255188d35cf09fb4689 Author: Regina Obe Date: Sat Nov 15 14:49:52 2025 -0500 Remove generated files in distclean target Author: Bas Couwenberg References #6019 for PostGIS 3.6.2 diff --git a/NEWS b/NEWS index 76662826a..9ec818ffe 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,19 @@ +PostGIS 3.6.2 +2025/xx/xx +This version requires PostgreSQL 12-18, GEOS 3.8 or higher, and Proj 6.1+. +To take advantage of all features, GEOS 3.14+ is needed. +To take advantage of all SFCGAL features, SFCGAL 2.2+ is needed. + +If you are upgrading postgis_topology from a version before 3.6.1 and have topogeometry columns, make sure to run +after the upgrade to fix topogeometry corruption: + +SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_column) + FROM topology.layer; + +* Fixes * + +- #6019, make clean does not remove cunit generated files + (Bas Couwenberg) PostGIS 3.6.1 2025/11/13 diff --git a/postgis/Makefile.in b/postgis/Makefile.in index 67feb698d..03955ba39 100644 --- a/postgis/Makefile.in +++ b/postgis/Makefile.in @@ -268,6 +268,7 @@ uninstall_legacy.sql: legacy.sql ../utils/create_uninstall.pl distclean: clean rm -f Makefile rm -f sqldefines.h + if [ -e "cunit/Makefile" ]; then make -C cunit distclean; fi check-unit: ----------------------------------------------------------------------- Summary of changes: NEWS | 16 ++++++++++++++++ postgis/Makefile.in | 1 + 2 files changed, 17 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 15 11:51:45 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 15 Nov 2025 19:51:45 -0000 Subject: [PostGIS] #6019: Remove generated files in distclean target In-Reply-To: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> References: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> Message-ID: <065.1ad6e26b47a598f8c815ffc225a54f0f@osgeo.org> #6019: Remove generated files in distclean target -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: robe Type: patch | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: build | Version: 3.6.x Resolution: | Keywords: -----------------------------+--------------------------- Comment (by Regina Obe ): In [changeset:"c615e151d0f02f6f0d469255188d35cf09fb4689/git" c615e15/git]: {{{#!CommitTicketReference repository="git" revision="c615e151d0f02f6f0d469255188d35cf09fb4689" Remove generated files in distclean target Author: Bas Couwenberg References #6019 for PostGIS 3.6.2 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 15 11:53:34 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 15 Nov 2025 11:53:34 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-204-gf4bd2e175 Message-ID: <20251115195335.209DA16ADD5@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via f4bd2e175f23d28607431e12b21f5964ad738a26 (commit) from 956489eec3f47a15ff5fb90c2f25b8a6ecae1399 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f4bd2e175f23d28607431e12b21f5964ad738a26 Author: Regina Obe Date: Sat Nov 15 14:52:54 2025 -0500 Remove generated files in distclean target Author: Bas Couwenberg Closes #6019 for PostGIS 3.7.0 diff --git a/postgis/Makefile.in b/postgis/Makefile.in index 67feb698d..03955ba39 100644 --- a/postgis/Makefile.in +++ b/postgis/Makefile.in @@ -268,6 +268,7 @@ uninstall_legacy.sql: legacy.sql ../utils/create_uninstall.pl distclean: clean rm -f Makefile rm -f sqldefines.h + if [ -e "cunit/Makefile" ]; then make -C cunit distclean; fi check-unit: ----------------------------------------------------------------------- Summary of changes: postgis/Makefile.in | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 15 11:53:51 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 15 Nov 2025 19:53:51 -0000 Subject: [PostGIS] #6019: Remove generated files in distclean target In-Reply-To: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> References: <050.f03cf6f347a6c9f7874275bc2df1db9f@osgeo.org> Message-ID: <065.3e4aa780a61704903691b101e26f2107@osgeo.org> #6019: Remove generated files in distclean target -----------------------------+--------------------------- Reporter: Bas Couwenberg | Owner: robe Type: patch | Status: closed Priority: medium | Milestone: PostGIS 3.6.2 Component: build | Version: 3.6.x Resolution: fixed | Keywords: -----------------------------+--------------------------- Changes (by Regina Obe ): * resolution: => fixed * status: new => closed Comment: In [changeset:"f4bd2e175f23d28607431e12b21f5964ad738a26/git" f4bd2e1/git]: {{{#!CommitTicketReference repository="git" revision="f4bd2e175f23d28607431e12b21f5964ad738a26" Remove generated files in distclean target Author: Bas Couwenberg Closes #6019 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 17 01:35:58 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 17 Nov 2025 01:35:58 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-205-gb5053b1e6 Message-ID: <20251117093558.85E1718A8D5@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via b5053b1e6d6d8a38688af411f524c433ff691249 (commit) from f4bd2e175f23d28607431e12b21f5964ad738a26 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b5053b1e6d6d8a38688af411f524c433ff691249 Author: Regina Obe Date: Mon Nov 17 04:34:30 2025 -0500 WINNIE packaging Fix sfcgal dep packaging diff --git a/ci/winnie/package_postgis.sh b/ci/winnie/package_postgis.sh index bcaa2435e..42358e30c 100644 --- a/ci/winnie/package_postgis.sh +++ b/ci/winnie/package_postgis.sh @@ -123,7 +123,7 @@ if [ -n "$SFCGAL_VER" ]; then echo "MPFR VERSION: ${MPFR_VER} http://www.mpfr.org" >> $verfile #cp -p ${PROJECTS}/CGAL/rel-cgal-${CGAL_VER}w${OS_BUILD}${GCC_TYPE}/bin/*.dll $outdir/bin - cp -p ${PROJECTS}/CGAL/rel-sfcgal-${SFCGAL_VER}w${OS_BUILD}${GCC_TYPE}/lib/*.dll $outdir/bin + cp -p ${PROJECTS}/CGAL/rel-sfcgal-${SFCGAL_VER}w${OS_BUILD}${GCC_TYPE}/bin/*.dll $outdir/bin fi; echo "PROTOBUF VERSION: ${PROTOBUF_VER} https://github.com/google/protobuf" >> $verfile ----------------------------------------------------------------------- Summary of changes: ci/winnie/package_postgis.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Nov 17 07:47:16 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 17 Nov 2025 15:47:16 -0000 Subject: [PostGIS] #6020: ST_MPointFromText(text WKT, integer srid) not working Message-ID: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> #6020: ST_MPointFromText(text WKT, integer srid) not working ---------------------+--------------------- Reporter: btudm | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Keywords: | ---------------------+--------------------- In PostGIS 3.6, the call to `St_GeomFromText` is not qualified in the function `ST_MPointFromText(text WKT, integer srid)`, hence it fails in pg 17+ Function `ST_MPointFromText(text WKT)` is fine though. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Nov 17 09:21:00 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 17 Nov 2025 09:21:00 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-206-gf8d9a7cb3 Message-ID: <20251117172101.310CF18F7A0@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via f8d9a7cb3074f27a73d9f6769b96bd7453163d4f (commit) from b5053b1e6d6d8a38688af411f524c433ff691249 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f8d9a7cb3074f27a73d9f6769b96bd7453163d4f Author: Regina Obe Date: Mon Nov 17 12:20:52 2025 -0500 Clear up some false positive coding spell errors diff --git a/.codespell.ignore b/.codespell.ignore index e75d0d639..7e1e0cfa0 100644 --- a/.codespell.ignore +++ b/.codespell.ignore @@ -1,4 +1,5 @@ aline +ba brin BUILDT crasher @@ -8,6 +9,7 @@ dum eiter foundin hel +hist infor inout larg ----------------------------------------------------------------------- Summary of changes: .codespell.ignore | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- PostGIS From git at osgeo.org Mon Nov 17 09:24:42 2025 From: git at osgeo.org (git at osgeo.org) Date: Mon, 17 Nov 2025 09:24:42 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-207-gbe8edabdb Message-ID: <20251117172443.0688319042A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via be8edabdb288c89046c5cc97a0817f505c9039f4 (commit) from f8d9a7cb3074f27a73d9f6769b96bd7453163d4f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit be8edabdb288c89046c5cc97a0817f505c9039f4 Author: Regina Obe Date: Mon Nov 17 12:24:37 2025 -0500 Fix another typo diff --git a/extensions/postgis_tiger_geocoder/Makefile.in b/extensions/postgis_tiger_geocoder/Makefile.in index ce3db167b..c486ec0cc 100644 --- a/extensions/postgis_tiger_geocoder/Makefile.in +++ b/extensions/postgis_tiger_geocoder/Makefile.in @@ -74,7 +74,7 @@ sql/test-normalize_address.sql: sql_bits/test_tuples_only_unaligned.sql.in ../.. sql/test-upgrade.sql: | sql echo 'ALTER EXTENSION ${EXTENSION} UPDATE TO "ANY"; ALTER EXTENSION ${EXTENSION} UPDATE TO "$(EXTVERSION)"' > $@ -## no_relocate clause is only availabe in PostgreSQL 16 and above, so strip it for lower +## no_relocate clause is only available in PostgreSQL 16 and above, so strip it for lower ifeq ($(shell expr "$(POSTGIS_PGSQL_VERSION)" "<" 160),1) %.control: %.control.in Makefile $(PERL) -lpe 's/^no_relocate.*//g; s/\@EXTVERSION\@/$(EXTVERSION)/g' < "$<" > "$@" ----------------------------------------------------------------------- Summary of changes: extensions/postgis_tiger_geocoder/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Nov 18 08:59:20 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 18 Nov 2025 16:59:20 -0000 Subject: [PostGIS] #6021: woodie failing on codespell Message-ID: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> #6021: woodie failing on codespell --------------------+-------------------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Website Management, Bots Component: build | Version: 3.5.x Keywords: | --------------------+-------------------------------------- It looks like since I rebuilt the postgis-docker image used by woodie, CI has been failing on codespell. Presumably because codespell was installed - https://gitea.osgeo.org/postgis/postgis- docker/commit/2f3ebb388343e75bf30c3cb42eed804c7e6708f4 and wasn't running prior to that. I tried to put in entries in the .codespell.ignore file, but I don't think that's working. https://woodie.osgeo.org/repos/30/pipeline/3813/11#L891 As the output is still flagging things like ./NEWS:223: Koordinates ==> Coordinates which is already in the ignore file. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Nov 18 09:05:23 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 18 Nov 2025 17:05:23 -0000 Subject: [PostGIS] #6021: woodie failing on codespell In-Reply-To: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> References: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> Message-ID: <061.63fd8d92c8e404f8644407a642e2c6c2@osgeo.org> #6021: woodie failing on codespell ---------------------+-------------------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Website Management, Bots Component: build | Version: 3.5.x Resolution: | Keywords: ---------------------+-------------------------------------- Comment (by strk): Neither me nor lnicola have problem with that ignored word, so it must be version specific. I'm running codespell 2.4.1 ( codespell --version, if you want to add to woodie config to check what it uses there ) -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Nov 18 18:47:55 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 18 Nov 2025 18:47:55 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-208-gdfc6bdfeb Message-ID: <20251119024755.CB5E2199145@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via dfc6bdfeb851416818eb0079e2fb19dd0a172b12 (commit) from be8edabdb288c89046c5cc97a0817f505c9039f4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit dfc6bdfeb851416818eb0079e2fb19dd0a172b12 Author: Teramoto Ikuhiro Date: Wed Nov 19 01:46:13 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 97.7% (5763 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index e6806a600..e77226c26 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,10 +10,10 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-11 04:47+0000\n" +"PO-Revision-Date: 2025-11-19 02:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,6 +53,11 @@ msgid "" "You can also use the more cross-platform approach of setting the " "corresponding ." msgstr "" +"??????????????????????????????????????" +"?????????????????? POSTGIS_GDAL_ENABLED_DRIVERS?POSTGIS_ENABLE_OUTDB_RASTERS " +"?????????????????????????????????" +"???????????" #. Tag: para #, no-c-format @@ -96,6 +101,11 @@ msgid "" "CLUSTER/environment where the " "placeholders refer to the PostgreSQL major version and cluster name." msgstr "" +"?????OS??????????Ubuntu?Debian??apt-" +"postgresql????PostgreSQL??????????????/etc/" +"postgresql/MAJOR/CLUSTER/environment (MAJRO???????????CLUSTER????????" +"????)????????????" #. Tag: para #, no-c-format @@ -139,6 +149,8 @@ msgid "" "If you have compiled and installed the extensions/postgis modules, you can " "turn a database into a spatial one using the EXTENSION mechanism." msgstr "" +"extensions/postgis??????????????????????????EXTENSI" +"ON?????????????????????????????????????" #. Tag: para #, no-c-format @@ -294,7 +306,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Soft upgrade using extensions" -msgstr "" +msgstr "??????????????????????" #. Tag: para #, no-c-format @@ -303,6 +315,9 @@ msgid "" "upgrade using extensions as well. Doing a minor upgrade with extensions is " "fairly painless." msgstr "" +"PostGIS???????????????????????????????????" +"??????????????????????????????????????" +"?????????????" #. Tag: para #, no-c-format @@ -310,6 +325,8 @@ msgid "" "Use the function to upgrade " "to the latest version you have installed." msgstr "" +"???????????????????????????????????? ????????" #. Tag: para #, no-c-format @@ -320,6 +337,11 @@ msgid "" "postgis_raster objects are folded back into the main " "extension." msgstr "" +"PostGIS 2.5????????????????????????????? " +"ALTER EXTENSION?postgis_extensions_upgrade()?????????? ???????????????????p" +"ostgis_raster???????????????????????????" +"???????" #. Tag: para #, no-c-format @@ -392,7 +414,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Soft upgrade without extensions" -msgstr "" +msgstr "???????????????????????" #. Tag: para #, no-c-format @@ -658,6 +680,9 @@ msgid "" "postgresql.conf or postgresql.auto.conf by using " "the ALTER SYSTEM command." msgstr "" +"postgresql.conf???postgresql.auto." +"conf???????? ALTER " +"SYSTEM??????????????????????????????" #. Tag: para #, no-c-format @@ -705,7 +730,7 @@ msgstr "shared_buffers" #. Tag: para #, no-c-format msgid "Default: ~128MB" -msgstr "" +msgstr "?????: ~128MB" #. Tag: para #, no-c-format @@ -725,6 +750,10 @@ msgid "" "and therefore also bounds how many workers can participate in parallel " "queries." msgstr "" +"max_worker_processes?" +"??????????????????????????????????????" +"???????????????????????????????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 18 22:41:37 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 18 Nov 2025 22:41:37 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-209-gdb628cadf Message-ID: <20251119064137.E2F1B19AB5C@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via db628cadfdaac9c19cba1f159814d834a3112dd4 (commit) from dfc6bdfeb851416818eb0079e2fb19dd0a172b12 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit db628cadfdaac9c19cba1f159814d834a3112dd4 Author: Teramoto Ikuhiro Date: Wed Nov 19 06:09:51 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 97.9% (5773 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index e77226c26..9f7fc625a 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-19 02:47+0000\n" +"PO-Revision-Date: 2025-11-19 06:41+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -417,13 +417,17 @@ msgid "Soft upgrade without extensions" msgstr "???????????????????????" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "Extensions have been the supported installation method for many releases. If " "you still rely on an unpackaged installation, perform a HARD UPGRADE into a database created with " "extensions and migrate your data there." msgstr "" +"??????????????????????????????????????" +"???????????????????????????????" +"?????????????????????HARD UPGRADE???????????????????????" #. Tag: title #, no-c-format @@ -721,6 +725,10 @@ msgid "" "they are in an inherited hierarchy and avoids paying the planner penalty " "otherwise." msgstr "" +"????????????????????????????" +"??????\"partition\"??????????????????????????" +"??????????????????????????????????????" +"??????????????" #. Tag: link #, no-c-format @@ -850,7 +858,7 @@ msgid "max_parallel_workers_per_gather" msgstr "max_parallel_workers_per_gather" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "Parallel query support in modern PostgreSQL and PostGIS uses this setting to " "decide how many workers a plan may request. If set to higher than 0, then " @@ -861,6 +869,13 @@ msgid "" "sure to bump up max_worker_processes to at least as high as " "this number." msgstr "" +"???PostgreSQL?PostGIS??????????????1???????????" +"?????????????????????????????0?????????" +"??????????????? ST_Intersects ?????????" +"???????????????????????????2???????????" +"??????????????????????????????????????" +"????????????????max_worker_processes??????" +"??????????" #. Tag: para #, no-c-format @@ -1496,7 +1511,7 @@ msgstr "?????????" #. Tag: para #, no-c-format msgid "(28). A 5 digit number. Identifies a ZIP code" -msgstr "" +msgstr "(28) 5?????ZIP??????" #. Tag: para #, no-c-format @@ -1624,6 +1639,8 @@ msgid "" "(token number \"13\"). (SADS elements \"ZIP CODE\" , \"PLUS 4\" ). This " "attribute is used for both the US ZIP and the Canadian postal codes." msgstr "" +"(?????? \"13\") (SADS???\"ZIP CODE\" , \"PLUS 4\" ). ??ZIP (??: " +"????)?????????????????????" #. Tag: para #, no-c-format @@ -2101,6 +2118,9 @@ msgid "" "located in the extras/history_table directory of the " "PostGIS source tree." msgstr "" +"history_table?????????PL/" +"pgSQL????????PostGIS???????extras/" +"history_table?????????????" #. Tag: para #, no-c-format @@ -2261,6 +2281,10 @@ msgid "" "suffixes, states, various control tables for managing data load, and " "skeleton base tables from which all the TIGER-loaded tables inherit." msgstr "" +"Tiger????????????????????????????????????" +"??????????????????????????????????????" +"???????????????????tiger???????" +"?????????????????" #. Tag: para #, no-c-format @@ -3075,13 +3099,17 @@ msgid "" "when enabled, zcta5 data is loaded as a single table called zcta5_all as " "part of the nation script load." msgstr "" +"Enhanced: 2.4.1 5????????? (zcta5)??????????zcta5????" +"???????????????????????zcta5_all???????????" +"????????????????" #. Tag: para #, no-c-format msgid "" "If you want ZIP Code 5 tabulation area (zcta5) to be included in your nation " "script load, do the following:" -msgstr "" +msgstr "5????????? " +"(zcta5)????????????????????????????:" #. Tag: para #, no-c-format @@ -3312,7 +3340,8 @@ msgstr "" msgid "" "zip4 last 4 digits of a 9 digit ZIP Code. Availability: " "PostGIS 2.4.0." -msgstr "" +msgstr "zip4 9????????4????Availability: PostGIS 2.4." +"0?" #. Tag: para #, no-c-format @@ -3863,6 +3892,10 @@ msgid "" "functions, fixed known usability issues, documented the features and " "functions, added new functionality, and improved SQL-MM compliance." msgstr "" +"PostGIS???????????????????????????????????" +"??????????????????????????????????????" +"????????????????????????????????????SQL-" +"MM??????????????" #. Tag: para #, no-c-format @@ -3898,11 +3931,15 @@ msgid "" "without-topology configure option at build time as described in " msgstr "" +"?????????????????????????????????" +"????????????????? --without-topology " +"?????????????????" #. Tag: title -#, no-c-format +#, fuzzy, no-c-format msgid "Topology Primitive Tables" -msgstr "" +msgstr "???????????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 53 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 8 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 18 22:44:28 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 18 Nov 2025 22:44:28 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-210-g8821e79c2 Message-ID: <20251119064428.B887819C788@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 8821e79c2423633171f5276b2e9542be83cca309 (commit) from db628cadfdaac9c19cba1f159814d834a3112dd4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8821e79c2423633171f5276b2e9542be83cca309 Author: Teramoto Ikuhiro Date: Wed Nov 19 06:43:14 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 97.9% (5773 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 9f7fc625a..cbcf58592 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-19 06:41+0000\n" +"PO-Revision-Date: 2025-11-19 06:44+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -2281,7 +2281,7 @@ msgid "" "suffixes, states, various control tables for managing data load, and " "skeleton base tables from which all the TIGER-loaded tables inherit." msgstr "" -"Tiger????????????????????????????????????" +"TIGER????????????????????????????????????" "??????????????????????????????????????" "???????????????????tiger???????" "?????????????????" ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 19 00:47:48 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 00:47:48 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-211-g4fd22aa0a Message-ID: <20251119084748.A55AC19DA27@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 4fd22aa0ae5c93bd04618f6a7a0fd35b30e8ae26 (commit) from 8821e79c2423633171f5276b2e9542be83cca309 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4fd22aa0ae5c93bd04618f6a7a0fd35b30e8ae26 Author: Teramoto Ikuhiro Date: Wed Nov 19 07:08:37 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 97.9% (5774 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index cbcf58592..e0b788db0 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-19 06:44+0000\n" +"PO-Revision-Date: 2025-11-19 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -1258,9 +1258,9 @@ msgid "" msgstr "" "????????????????????PostgreSQL?????????????" "??????????????????????????????????????" -"????????????????????lex (lexicon, ??)?gaz (gazetteer, " -"???)???rules?????????????????????????????" -"?????????????" +"?????????????????????lex (lexicon, ??)?gaz (" +"gazetteer, ???)???rules????????????????????????" +"??????????????????" #. Tag: para #, no-c-format @@ -2061,9 +2061,8 @@ msgid "" "Using tables packaged with tiger geocoder. This example only works if you " "installed postgis_tiger_geocoder." msgstr "" -"Tiger???????????????????????????" -"postgis_tiger_geocoder??????????????????" -"???" +"TIGER????????????????????????????postgis" +"_tiger_geocoder?????????????????????" #. Tag: para #, no-c-format @@ -2238,7 +2237,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Tiger Geocoder" -msgstr "Tiger?????" +msgstr "TIGER??????" #. Tag: para #, no-c-format @@ -2250,17 +2249,16 @@ msgid "" msgstr "" "????????????TIGER (Topologically Integrated Geographic Encoding and Referencing " -"system ) / Line and Master Address database export??????????" -"??PL/pgSQL????????????" +"system ) / Line and Master Address database " +"export????????????PL/pgSQL?????????????" #. Tag: para #, no-c-format msgid "" "There are four components to the geocoder: the data loader functions, the " "address normalizer, the address geocoder, and the reverse geocoder." -msgstr "" -"??????????????????????????????????????" -"??????" +msgstr "??????????????????????????????????????" +"????????" #. Tag: para #, no-c-format @@ -2298,6 +2296,14 @@ msgid "" "faces, edges, etc located in the " "tiger schema." msgstr "" +"?????tiger_data???????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"???????ma_addr?ma_edges????" +"????????????????????????????????????addr?faces?edges?????????????????? " +"tiger????????????" #. Tag: para #, no-c-format @@ -2366,9 +2372,9 @@ msgid "" "the given address and likeliness of the location. The higher the rating " "number the worse the result." msgstr "" -"?????????????????????????????????Tiger???" -"?????????????????????????????????????" -"??????????????????????????????????????" +"?????????????????????????????????TIGER???" +"??????????????????????????????????????" +"??????????????????????????????????????" "?????????????????????????" #. Tag: para @@ -2385,9 +2391,9 @@ msgid "" "and use, and should be easily installable and usable on all platforms " "supported by PostGIS." msgstr "" -"???????PostGIS????????????????????????????" -"??????????PostGIS?????????????????????????" -"???????????????" +"????????PostGIS???????????????????????????" +"???????????PostGIS????????????????????????" +"????????????????" #. Tag: para #, no-c-format @@ -2446,12 +2452,13 @@ msgid "" "relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " "has a reverse geocoder among some other neat features." msgstr "" -"GIS Graphy??PostGIS?" -"????????Nominatim????OpenStreetMap (OSM)??????????OSM" -"??????????????Nominatim????????????????????" -"??????????Nominatim????????Web???????????Java " -"1.5????????????????Apache Solr?????????GisGraphy??" -"???????????????????????????????????" +"GIS " +"Graphy??PostGIS?????????Nominatim????OpenStreetMap (OSM" +")??????????OSM??????????????Nominatim????????" +"??????????????????????Nominatim????????Web??" +"?????????Java 1.5????????????????Apache Solr????" +"?????GisGraphy?????????????????????????????" +"?????????" #. Tag: refpurpose #, no-c-format @@ -2483,10 +2490,10 @@ msgid "" "linkend=\"Install_Missing_Indexes\"/> to add just the indexes used by the " "geocoder." msgstr "" -"PostgreSQL????????????????????????????????" -"?????????????????????????????????????" -"????????????????" -"??" +"PostgreSQL?????????????????????????????????" +"????????????????????????" +"???????????????????????????????" #. Tag: para #, no-c-format @@ -2585,14 +2592,15 @@ msgid "" "to offset 10 meters from center-line off to side (L/R) of street address is " "located on." msgstr "" -"????? (???????????)???????NAD 83???????????" -"??? (geomout)????normalized_address (addy)???? " -"(rating)??????????????????????????????????" -"????????Tiger??? (???????????)?PostgreSQL??????" -"??? (soundex,levenshtein)????Tiger??????????????????" -"??PostGIS?????????????????????????????????" -"??????????????????????????????????/????" -"????????????10???????" +"????? (???????????)???????NAD " +"83?????????????? (geomout)????normalized_address (addy)???? (rating)??????????????????????" +"????????????????????TIGER??? " +"(???????????)?PostgreSQL????????? (soundex,levenshtein)" +"????TIGER????????????????????PostGIS????????" +"??????????????????????????????????????" +"?????????????????????/????????????????10" +"???????" #. Tag: para #, no-c-format @@ -2603,7 +2611,7 @@ msgid "" "max_results useful for specifying number of best results " "or just returning the best result." msgstr "" -"Enhanced: 2.0.0 Tiger 2010?????????????????????????" +"Enhanced: 2.0.0 TIGER 2010?????????????????????????" "??????????????????????????????????????" "??????????????????????????????????????" "????????????max_results????????" @@ -2676,7 +2684,7 @@ msgstr "" "???????????????????????geomout?NAD83????????" "??normalized_address?????????rating??????" "??????????????????????????????????????" -"????????????????????????????10???Tiger??? " +"????????????????????????????10???TIGER??? " "(???????????)??PostgreSQL????????? (soundex, " "levenshtein)??????" @@ -2697,12 +2705,12 @@ msgstr "" "??????????????????????????????????????" "??????????????????????????????NAD83??????" "??????????????????????????????????????" -"?????????????????????????????????????" -"?????10???normalized_address (addy)?NAD83????" -"????????geomout???????rating?????????????????" -"???????????????????????????Tiger??? (????" -"???????)??PostgreSQL????????? (soundex, levenshtein)???" -"???" +"??????????????????????????????????????" +"????10???normalized_address (addy)?NAD83?????" +"???????geomout???????rating??????????????????" +"??????????????????????????TIGER??? " +"(???????????)??PostgreSQL????????? (soundex, " +"levenshtein)??????" #. Tag: para #, no-c-format @@ -2710,8 +2718,8 @@ msgid "" "Even if zip is not passed in the geocoder can guess (took about 3500 ms on " "the windows 7 box), on the windows 2003 64-bit 741 ms" msgstr "" -"???????????????????????Windows 2003 64????741??" -"????(Windows 7??3500???)?" +"????????????????????????Windows 2003 " +"64????741??????(Windows 7??3500???)?" #. Tag: para #, no-c-format @@ -2809,9 +2817,8 @@ msgstr ">" msgid "" "Finds all tables with key columns used in geocoder joins and filter " "conditions that are missing used indexes on those columns and will add them." -msgstr "" -"??????????????????????????????????????" -"????????????????????????" +msgstr "??????????????????????????????????????" +"?????????????????????????" #. Tag: para #, no-c-format @@ -2826,14 +2833,15 @@ msgid "" "generating the create index script, also executes it. It is called as part " "of the update_geocode.sql upgrade script." msgstr "" -"?????????????????????????????????????" +"??????????????????????????????????????" "??tiger?????tiger_data?????" "???????????????????????????????????SQL??" "??????????????????????????????????????" -"??????????????????????????????????????" -"?????????????????????????????" -"update_geocode.sql???????????????????" +"??????????????????????????????????" +"?????????????????????????????????update_geocode." +"sql???????????????????" #. Tag: refpurpose #, no-c-format @@ -2953,11 +2961,11 @@ msgid "" "version supports Tiger 2010 structural changes and also loads census tract, " "block groups, and blocks tables." msgstr "" -"?????????????????????Tiger???????????????" +"?????????????????????TIGER???????????????" "?????tiger_data???????????????????" -"?????????????????????????????Tiger 2010????" -"????????????????????????????? (tabblocks)???" -"??????????????????" +"?????????????????????????????TIGER " +"2010????????????????????????????????? " +"(tabblocks)?????????????????????" #. Tag: para #, no-c-format @@ -2966,7 +2974,7 @@ msgid "" "that will download Tiger data, stage and load into tiger_data schema. Each state script is returned as a separate record." msgstr "" -"?????????????????????Tiger???????????????" +"?????????????????????TIGER???????????????" "?????tiger_data???????????????????" "????????????????????????" @@ -2991,9 +2999,9 @@ msgid "" "Availability: 2.0.0 to support Tiger 2010 structured data and load census " "tract (tract), block groups (bg), and blocks (tabblocks) tables ." msgstr "" -"Availability: 2.0.0 Tiger 2010??????????????????? " -"(tract)???????? (\"block groups\", bg)???? (tabblocks)?????" -"??????????" +"Availability: 2.0.0 TIGER 2010??????????????????? " +"(tract)???????? (\"block groups\", bg)???? " +"(tabblocks)???????????????" #. Tag: para #, no-c-format @@ -3119,10 +3127,10 @@ msgid "" "load generate and run drop statements before you run this script." msgstr "" -"tiger_2010?????????????Tiger????????" -"????????????????????????????????????????????" -"??????????????????" +"tiger_2010?????????????TIGER????????" +"??????????????????????????????????????????????????????????????" #. Tag: para #, no-c-format @@ -3146,9 +3154,9 @@ msgid "" "indexes on those columns and will output the SQL DDL to define the index for " "those tables." msgstr "" -"??????????????????????????????????????" -"?????????????????????????????SQL????????" -"??????" +"??????????????????????????????????????" +"??????????????????????????????SQL???????" +"???????" #. Tag: para #, no-c-format @@ -3166,9 +3174,9 @@ msgstr "" "??????????????????????????????????????" "?????????????????SQL????????????????????" "??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"?????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" #. Tag: para #, no-c-format @@ -3186,8 +3194,8 @@ msgid "" msgstr "" "??????????????????????????????????????" "?????????????????norm_addy???????" -"??tiger_geocoder??????????????????????? (Tiger???" -"???????)?" +"??tiger_geocoder??????????????????????? " +"(TIGER??????????????)?" #. Tag: para #, no-c-format @@ -3201,7 +3209,7 @@ msgstr "" "??????????????????????????????????????" "?????????????????norm_addy???????" "??????????????????????????????????????" -"???????????????????????????" +"????????????????????????????" #. Tag: para #, no-c-format @@ -3214,10 +3222,10 @@ msgid "" "tiger schema." msgstr "" "tiger_geocoder??????????????tiger?????" -"???????????/?/????????????????????????" -"Tiger???????????????????????????????" -"tiger??????????????????????????" -"?????????????" +"???????????/?/????????????????????????TIG" +"ER???????????????????????????????????tiger?????????????????????????????" +"??????????" #. Tag: para #, no-c-format @@ -3236,7 +3244,7 @@ msgid "" "[] indicates an optional field:" msgstr "" "???????norm_addy?????????????????" -"???????()???????????????[]???????????" +"???????()????????????????[]???????????" #. Tag: para #, no-c-format @@ -3380,7 +3388,7 @@ msgstr "" "??????????????????????????????????????" "????????????????????norm_addy????" "???????????tiger_geocoder???????????????????? " -"(Tiger????????)????????????????????" +"(TIGER????????????)????????????????????" #. Tag: para #, no-c-format @@ -3392,11 +3400,10 @@ msgid "" "alternative namings to the various lookup tables in the tiger schema." msgstr "" -"??????Tiger???????????????tiger???" -"??????????pagc_+??????????????????Tiger?????" -"????????????????????????????tiger?????????????????????????????????" -"??" +"??????TIGER????????????????tiger??" +"???????????pagc_+??????????????????TIGER????" +"?????????????????????????????tiger???????????????????????????????????" #. Tag: para #, no-c-format @@ -3479,8 +3486,8 @@ msgid "" "print representation of it. No other data is required aside from what is " "packaged with the geocoder." msgstr "" -"norm_addy???????????????????????" -"??Tiger???????????????????" +"norm_addy????????????????????????" +"?TIGER????????????????????" #. Tag: para #, no-c-format @@ -3541,14 +3548,15 @@ msgid "" "taking up a good chunk of the street range and the rest of the buildings are " "clustered at the end." msgstr "" -"????????????????????????????????Tiger????" +"????????????????????????????????TIGER????" "??????????????????????????????????????" -"?????????????????????????????26 Court Sq.???" -"???????????26 Court St. ? 26 Court Sq.?????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" +"?????????????????????????????26 Court Sq." +"??????????????26 Court St. ? 26 Court Sq.??????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"???" #. Tag: para #, no-c-format @@ -3557,7 +3565,7 @@ msgid "" "covering the region of this point, then hmm you will get a record filled " "with NULLS." msgstr "" -"???: ?????Tiger???????????????????????????" +"???: ?????TIGER???????????????????????????" "???????NULL????????????????????" #. Tag: para @@ -3662,7 +3670,7 @@ msgid "" "transforming the tiger data to spatial reference of the topology and " "snapping to the precision tolerance of the topology." msgstr "" -"Tiger?????????PostGIS???????????Tiger??????????" +"TIGER?????????PostGIS???????????TIGER??????????" "?????????????????????????????" #. Tag: para @@ -3676,11 +3684,11 @@ msgid "" "future be more easily reconciled with tiger data. Returns summary details " "about the process." msgstr "" -"Tiger?????????PostGIS???????????????????????" -"?????????????????????????????????????" -"?????????????????????????????Tiger???????" -"????????????????????????????????????Tiger" -"??????????????????????????????????" +"TIGER?????????PostGIS???????????????????????" +"??????????????????????????????????????" +"????????????????????????????TIGER????????" +"???????????????????????????????????TIGER?" +"?????????????????????????????????" #. Tag: para #, no-c-format @@ -3702,11 +3710,11 @@ msgid "" "topology records will be created. This function will also fail if you have " "not created a topology using the topology functions." msgstr "" -"?????PostGIS??????????Tiger?????????????????" -"????????????????????????" -"??????????????????????????????????????" -"?????????????????" +"?????PostGIS??????????TIGER?????????????????" +"????????????????????????????" +"??????????????????????????????????????" +"?????????????" #. Tag: para #, no-c-format @@ -3771,9 +3779,9 @@ msgid "" "with tolerance 0.25 feet and then load in Boston city tiger faces, edges, " "nodes." msgstr "" -"?????????????????????????????????? (2249)?" -"????0.25??????????????Tiger????????????????" -"????????" +"?????????????????????????????????? " +"(2249)?????0.25??????????????TIGER????????????" +"????????????" #. Tag: title #, no-c-format @@ -3788,8 +3796,8 @@ msgid "" "faces, edges, nodes." msgstr "" "???????????????????????????????????? " -"(26986)?????0.25???????????????Tiger?????????" -"???????????????" +"(26986)?????0.25???????????????TIGER??????????" +"??????????????" #. Tag: para #, no-c-format @@ -3803,7 +3811,7 @@ msgstr "" #. Tag: refpurpose #, no-c-format msgid "Sets a setting that affects behavior of geocoder functions." -msgstr "???????????????????????????" +msgstr "????????????????????????????" #. Tag: para #, no-c-format @@ -8568,7 +8576,7 @@ msgstr "?????????????????" #. Tag: para #, no-c-format msgid "Disables tiger geocoder support." -msgstr "Tiger????????????????" +msgstr "TIGER????????????????" #. Tag: para #, no-c-format @@ -9004,9 +9012,9 @@ msgid "" "available in your PostgreSQL instance. The address_standardizer tests will " "also kick in if you built postgis with address_standardizer support:" msgstr "" -"Tiger Geocode????????????PostgreSQL????????PostGIS?" -"fuzzystrmatch???????????????PostGIS?address_standardizer??" -"????????????address_standardizer??????????" +"TIGER??????????????????PostgreSQL????????PostGIS?f" +"uzzystrmatch???????????????PostGIS?address_standardizer???" +"???????????address_standardizer??????????" #. Tag: para #, no-c-format @@ -9108,11 +9116,11 @@ msgid "" "a building block for your own geocoder or use it to standardize your " "addresses for easier compare of addresses." msgstr "" -"??????????????????" -"PostGIS??????Tiger??????????????????????????" -"????????????" -"??????????????????????????????????????" -"??????????????????????????????????" +"??????????????????Post" +"GIS??????TIGER?????????????????????????" +"???????????????????????????????????????????????????" +"????????????????????????????????????" #. Tag: para #, no-c-format @@ -9161,7 +9169,7 @@ msgstr "?????????????" #. Tag: title #, no-c-format msgid "Installing, Upgrading Tiger Geocoder, and loading data" -msgstr "Tiger???????????????????????????" +msgstr "TIGER????????????????????????????" #. Tag: para #, no-c-format @@ -9175,19 +9183,19 @@ msgid "" "for windows, the postgis_tiger_geocoder extension files will work on any OS " "since the extension is an SQL/plpgsql only extension." msgstr "" -"Tiger??????????????PostGIS??????????????????" -"????Tiger????????????????????????????????" -"??????????????????Windows Unreleased Versions?PostgreSQL?????" -"?????????share/extension/postgis_tiger_geocoder.*????????????????????Windows?????" -"postgis_tige_geocoder??????????????SQL?PL/pgSQL???????" -"??OS????????" +"TIGER???????????????PostGIS?????????????????" +"?????TIGER???????????????????????????????" +"????????????????????Windows Unreleased " +"Versions?PostgreSQL??????????????share/" +"extension/postgis_tiger_geocoder.*????????????????" +"????Windows?????postgis_tige_geocoder??????????????SQL" +"?PL/pgSQL?????????OS????????" #. Tag: title #, no-c-format msgid "Tiger Geocoder Enabling your PostGIS database" -msgstr "Tiger??????PostGIS????????????" +msgstr "TIGER???????PostGIS????????????" #. Tag: para #, no-c-format @@ -9322,12 +9330,11 @@ msgid "" "staging_fold in the tiger.loader_variables table." msgstr "" -"?????????? (??????????????????)?????" -"gisdata?????????????????????Tiger" -"??????????????????????????????????????" -"?????????????????????????????tiger." -"loader_variables?????staging_fold?????" -"???????" +"?????????? (??????????????????)?????gisdata?????????????????????TIGER?????" +"??????????????????????????????????????" +"????????????????????????tiger.loader_variabl" +"es?????staging_fold????????????" #. Tag: para #, no-c-format @@ -9338,7 +9345,7 @@ msgid "" msgstr "" "gisdata??????temp????????????????" "???staging_fold????????????????????" -"????????Tiger?????????????" +"????????TIGER?????????????" #. Tag: para #, no-c-format @@ -9382,10 +9389,10 @@ msgid "" "population statistics. If you wish to load them as part of your state loads, " "run the following statement to enable them." msgstr "" -"???????bg, tract, " -"tabblock20????????????????????????" -"??????????????????????????????????????" -"????????????????????????????????" +"???????bg, tract, tabbl" +"ock20???????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????" #. Tag: para #, no-c-format @@ -9432,8 +9439,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Using Address Standardizer Extension with Tiger geocoder" -msgstr "" -"Tiger??????PostGIS????????????: ???????????" +msgstr "TIGER???????PostGIS????????????: ???????????" #. Tag: para #, no-c-format @@ -9470,11 +9476,11 @@ msgid "" "update to improve your standardizing experience for your own needs." msgstr "" "???????????postgis_tiger_geocoder??????????" -"?????????????????????????????????????" -"?????????Tiger???????????????????????????" -"?????????????Tiger??????????????????? (tiger.pagc_rules), ???????????????????" +"?????????TIGER???????????????????????????" +"??????????????TIGER????????????????" +"???? (tiger.pagc_rules), (tiger.pagc_gaz), (tiger.pagc_lex)???????????????????????" "??????????????????" @@ -9482,7 +9488,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Required tools for tiger data loading" -msgstr "Tiger??????????????" +msgstr "TIGER??????????????" #. Tag: para #, no-c-format @@ -9573,13 +9579,13 @@ msgid "" "time step that should be done for upgrading (from a prior year tiger census " "data) and for new installs." msgstr "" -"tiger_2010?????????????????????????????????" -"?????????????????????????????????????????????????????????????????" -"??????????????????????????(?????Tiger????" -"??????)???????????????????????1????" +"??????????????????????????(?????TIGER????" +"??????)???????????????????????1????" #. Tag: para #, no-c-format @@ -9612,13 +9618,13 @@ msgid "" "To test that things are working as they should, try to run a geocode on an " "address in your state using " msgstr "" -"?????????????????????????" -"?????????????????????????" +"???????????????????????????????????????????????????" #. Tag: title #, no-c-format msgid "Upgrading your Tiger Geocoder Install and Data" -msgstr "Tiger?????????????????" +msgstr "TIGER??????????????????" #. Tag: para #, no-c-format @@ -9857,8 +9863,8 @@ msgid "" "TIGER geocoder support, management functions." msgstr "" "???????????????????????????Windows????????" -"?????????????PostgreSQL?????X3D???Tiger Geocoder????" -"????" +"?????????????PostgreSQL?????X3D???TIGER????????" +"??????" #. Tag: term #, no-c-format @@ -17345,8 +17351,9 @@ msgid "" msgstr "" "PostGIS ?????????????????????????15????????" "????????????????PostGIS???????15???????????" -"????????????????6?????????????????Tiger??" -"?????? (???????????????9?????8???)?" +"???????????" +"?????6?????????????????TIGER???????? " +"(???????????????9?????8???)?" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 337 ++++++++++++++++++++++---------------------- 1 file changed, 172 insertions(+), 165 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 19 08:39:20 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 08:39:20 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-5-g4a9da4fca Message-ID: <20251119163920.E1E061A2B9A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 4a9da4fcaa9de8e7dc87b6a3be7569cdc2e17e95 (commit) from c615e151d0f02f6f0d469255188d35cf09fb4689 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4a9da4fcaa9de8e7dc87b6a3be7569cdc2e17e95 Author: Paul Ramsey Date: Wed Nov 19 08:39:11 2025 -0800 schema qualify call in ST_MPointFromText, references #6020 diff --git a/NEWS b/NEWS index 9ec818ffe..d1c1e0708 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ + PostGIS 3.6.2 2025/xx/xx + This version requires PostgreSQL 12-18, GEOS 3.8 or higher, and Proj 6.1+. To take advantage of all features, GEOS 3.14+ is needed. To take advantage of all SFCGAL features, SFCGAL 2.2+ is needed. @@ -14,6 +16,8 @@ SELECT topology.FixCorruptTopoGeometryColumn(schema_name, table_name, feature_co - #6019, make clean does not remove cunit generated files (Bas Couwenberg) +- #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) + PostGIS 3.6.1 2025/11/13 diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index c4177edb9..398031528 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -5716,7 +5716,7 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text, integer) RETURNS geometry AS ' SELECT CASE WHEN @extschema at .ST_GeometryType(@extschema at .ST_GeomFromText($1, $2)) = ''ST_MultiPoint'' - THEN ST_GeomFromText($1, $2) + THEN @extschema at .ST_GeomFromText($1, $2) ELSE NULL END ' LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE ----------------------------------------------------------------------- Summary of changes: NEWS | 4 ++++ postgis/postgis.sql.in | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 19 08:39:30 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 19 Nov 2025 16:39:30 -0000 Subject: [PostGIS] #6020: ST_MPointFromText(text WKT, integer srid) not working In-Reply-To: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> References: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> Message-ID: <062.e53549ed3c5ff1dcc52912ac50bd14b8@osgeo.org> #6020: ST_MPointFromText(text WKT, integer srid) not working ----------------------+--------------------- Reporter: btudm | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ----------------------+--------------------- Comment (by Paul Ramsey ): In [changeset:"4a9da4fcaa9de8e7dc87b6a3be7569cdc2e17e95/git" 4a9da4f/git]: {{{#!CommitTicketReference repository="git" revision="4a9da4fcaa9de8e7dc87b6a3be7569cdc2e17e95" schema qualify call in ST_MPointFromText, references #6020 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 19 08:40:08 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 08:40:08 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-8-gc3afc1107 Message-ID: <20251119164008.F292F19CEC1@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.5 has been updated via c3afc11077b801cd3b88462519a4b1d9d79d8bc3 (commit) from 6e6c2eb228e0fd4fdc4a034a74281ce2499684c9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c3afc11077b801cd3b88462519a4b1d9d79d8bc3 Author: Paul Ramsey Date: Wed Nov 19 08:40:02 2025 -0800 schema qualify call in ST_MPointFromText, references #6020 diff --git a/NEWS b/NEWS index 075318f84..fbedc58aa 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ PostgreSQL 12-18 required. GEOS 3.8+ required. Proj 6.1+ required. * Bug fixes * - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) + - #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) PostGIS 3.5.4 diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index 0ad1db1e3..2b9a8fe76 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -5718,7 +5718,7 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text, integer) RETURNS geometry AS ' SELECT CASE WHEN @extschema at .ST_GeometryType(@extschema at .ST_GeomFromText($1, $2)) = ''ST_MultiPoint'' - THEN ST_GeomFromText($1, $2) + THEN @extschema at .ST_GeomFromText($1, $2) ELSE NULL END ' LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + postgis/postgis.sql.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 19 08:40:19 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 19 Nov 2025 16:40:19 -0000 Subject: [PostGIS] #6020: ST_MPointFromText(text WKT, integer srid) not working In-Reply-To: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> References: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> Message-ID: <062.8008b483c1158f56fc58f0a583462883@osgeo.org> #6020: ST_MPointFromText(text WKT, integer srid) not working ----------------------+--------------------- Reporter: btudm | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ----------------------+--------------------- Comment (by Paul Ramsey ): In [changeset:"c3afc11077b801cd3b88462519a4b1d9d79d8bc3/git" c3afc11/git]: {{{#!CommitTicketReference repository="git" revision="c3afc11077b801cd3b88462519a4b1d9d79d8bc3" schema qualify call in ST_MPointFromText, references #6020 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 19 08:42:24 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 08:42:24 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-63-gc1613ccca Message-ID: <20251119164224.442AC1A2A32@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.4 has been updated via c1613ccca5df7d587bd4ade0a49c34de5e0434b7 (commit) from 51c29b96077122fe9e2794f98585fe03a110e02e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c1613ccca5df7d587bd4ade0a49c34de5e0434b7 Author: Paul Ramsey Date: Wed Nov 19 08:42:17 2025 -0800 schema qualify call in ST_MPointFromText, references #6020 diff --git a/NEWS b/NEWS index 2828a8c5f..68a4c5130 100644 --- a/NEWS +++ b/NEWS @@ -35,6 +35,7 @@ Proj 6.1+ required. - #5989, ST_Distance error on CurvePolygon (Paul Ramsey) - #5962, Consistent clipping of MULTI/POINT (Paul Ramsey) - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) + - #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) PostGIS 3.4.4 diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index d8be7593b..f1175e101 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -5744,7 +5744,7 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text, integer) RETURNS geometry AS ' SELECT CASE WHEN @extschema at .geometrytype(@extschema at .ST_GeomFromText($1, $2)) = ''MULTIPOINT'' - THEN ST_GeomFromText($1, $2) + THEN @extschema at .ST_GeomFromText($1, $2) ELSE NULL END ' LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + postgis/postgis.sql.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 19 08:42:25 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 19 Nov 2025 16:42:25 -0000 Subject: [PostGIS] #6020: ST_MPointFromText(text WKT, integer srid) not working In-Reply-To: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> References: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> Message-ID: <062.483bcdc23fb5a141a13a60c2ea50589a@osgeo.org> #6020: ST_MPointFromText(text WKT, integer srid) not working ----------------------+--------------------- Reporter: btudm | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ----------------------+--------------------- Comment (by Paul Ramsey ): In [changeset:"c1613ccca5df7d587bd4ade0a49c34de5e0434b7/git" c1613cc/git]: {{{#!CommitTicketReference repository="git" revision="c1613ccca5df7d587bd4ade0a49c34de5e0434b7" schema qualify call in ST_MPointFromText, references #6020 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 19 08:44:13 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 08:44:13 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-212-gf9b78e888 Message-ID: <20251119164413.A55BD19E72E@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via f9b78e888a1bd3b35469e27ab7b48b80c2508e1b (commit) from 4fd22aa0ae5c93bd04618f6a7a0fd35b30e8ae26 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f9b78e888a1bd3b35469e27ab7b48b80c2508e1b Author: Paul Ramsey Date: Wed Nov 19 08:44:07 2025 -0800 schema qualify call in ST_MPointFromText, closes #6020 diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index dee9101c4..3e5916205 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -5728,7 +5728,7 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text, integer) RETURNS geometry AS ' SELECT CASE WHEN @extschema at .ST_GeometryType(@extschema at .ST_GeomFromText($1, $2)) = ''ST_MultiPoint'' - THEN ST_GeomFromText($1, $2) + THEN @extschema at .ST_GeomFromText($1, $2) ELSE NULL END ' LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE ----------------------------------------------------------------------- Summary of changes: postgis/postgis.sql.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Nov 19 08:44:14 2025 From: trac at osgeo.org (PostGIS) Date: Wed, 19 Nov 2025 16:44:14 -0000 Subject: [PostGIS] #6020: ST_MPointFromText(text WKT, integer srid) not working In-Reply-To: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> References: <047.e7bbaec7740cc322cbd20f6d74e37a57@osgeo.org> Message-ID: <062.80692e5f7dbd551ee99436eb1a526f01@osgeo.org> #6020: ST_MPointFromText(text WKT, integer srid) not working ----------------------+--------------------- Reporter: btudm | Owner: pramsey Type: defect | Status: closed Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: fixed | Keywords: ----------------------+--------------------- Changes (by Paul Ramsey ): * resolution: => fixed * status: new => closed Comment: In [changeset:"f9b78e888a1bd3b35469e27ab7b48b80c2508e1b/git" f9b78e8/git]: {{{#!CommitTicketReference repository="git" revision="f9b78e888a1bd3b35469e27ab7b48b80c2508e1b" schema qualify call in ST_MPointFromText, closes #6020 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Nov 19 17:47:55 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 17:47:55 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-213-gc008e6413 Message-ID: <20251120014755.E2C7C1A4630@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via c008e64134b869b5f51832681bed6422c01f7033 (commit) from f9b78e888a1bd3b35469e27ab7b48b80c2508e1b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c008e64134b869b5f51832681bed6422c01f7033 Author: Teramoto Ikuhiro Date: Thu Nov 20 00:01:49 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.1% (5784 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index e0b788db0..8984b23ee 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-19 08:47+0000\n" +"PO-Revision-Date: 2025-11-20 01:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -2314,6 +2314,10 @@ msgid "" "different schema for each state, as long as all the tables inherit from the " "tables in the tiger schema." msgstr "" +"???????????????????????tiger_data " +"??????????????????????????????????????" +"??????????? tiger???????????????" +"?????????????????????????" #. Tag: para #, no-c-format @@ -2337,6 +2341,13 @@ msgid "" "have data from tiger_2010 and want to replace with tiger_2015, refer to " "" msgstr "" +"TIGER?????? (tiger_2010)???????????extras/" +"tiger????upgrade_geocoder.bat / .sh " +"????????????????????? tiger_2010 ? " +"tiger_2011 ????????????county?????state????????????????????" +"??????tiger_2010?????????????tiger_2015?????????" +"??? ?????????" #. Tag: para #, no-c-format @@ -2344,6 +2355,9 @@ msgid "" "You can install the TIGER Geocoder with the PostgreSQL extension model. " "Refer to for details." msgstr "" +"TIGER???????PostgreSQL???????????????????????" +"???????????????" #. Tag: para #, no-c-format @@ -2382,7 +2396,8 @@ msgstr "" msgid "" "The reverse_geocode function is useful for deriving the " "street address and cross streets of a GPS location." -msgstr "" +msgstr "reverse_geocode???GPS?????????????????" +"???????" #. Tag: para #, no-c-format @@ -2428,6 +2443,8 @@ msgid "" "There are a couple other open source geocoders for PostGIS, that unlike the " "TIGER Geocoder have the advantage of multi-country geocoding support" msgstr "" +"PostGIS???????????????????????????TIGER?????" +"???????????????????????????????" #. Tag: para #, no-c-format @@ -2441,6 +2458,13 @@ msgid "" "interface like the TIGER Geocoder, or if a good deal of the logic is " "implemented in the web interface." msgstr "" +"Nominatim??OpenStreetMap?????????????PostgreSQL?PostGIS?????" +"??????????osm2pgsql??????Web????????????????" +"??????Web??????????????????????TIGER??????" +"????????????????????????????????????TIGER" +"????????????SQL??????????????????????Web?" +"???????????????????????????" #. Tag: para #, no-c-format @@ -2937,6 +2961,9 @@ msgid "" "scripts, rerun it on the states you have already processed to get these " "additional tables." msgstr "" +"?????????????????????????TIGER???????????" +"??????????????????????????????????Loader_Ge" +"nerate_Script???????" #. Tag: para #, no-c-format @@ -3963,6 +3990,15 @@ msgid "" "therefore appear twice?once for each orientation?when it belongs to two " "faces." msgstr "" +"?????????????????????edge_data? " +"node,?face????????????" +"?????????????????????" +"?????edge_data???????????????????" +"?start_node??end_node???????" +"???????????????????????? " +"(left_face)?????? (right_face)?" +"?????????????????????????2?????????????" +"?????2? (?????1???)????????????" #. Tag: para #, no-c-format @@ -3974,9 +4010,14 @@ msgid "" "the stored orientation has to be followed as-is or reversed when traversing. " "Formally, the following rules hold for every edge e:" msgstr "" +"next_left_edge????next_right_edge?" +"??????????????????????????????????????" +"??????????????????????????????????????" +"???????????????????????????????" +"????????? (???? e????):" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "abs(next_left_edge) is the identifier of the edge reached " "by continuing around the face that lies to the left of e. " @@ -3985,6 +4026,11 @@ msgid "" "negative the referenced edge must be followed backwards so that the shared " "face remains on the walker?s left." msgstr "" +"abs(next_left_edge)?e????????" +"?????????????????????????????????e<" +"/varname>??????????????????????????????????" +"??????????????????????????????????????" +"????????????????" #. Tag: para #, no-c-format @@ -3996,6 +4042,13 @@ msgid "" "instructs to traverse the referenced edge in reverse, starting from its end " "node, so that the right-hand face is preserved." msgstr "" +"abs(next_right_edge)?e????????" +"??????????????????????????????????????" +"?e???????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 59 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 19 19:47:54 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 19:47:54 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-214-g889850c0c Message-ID: <20251120034754.55DB41A4F9F@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 889850c0c4719b62e05738f06f0f94dbcff8f989 (commit) from c008e64134b869b5f51832681bed6422c01f7033 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 889850c0c4719b62e05738f06f0f94dbcff8f989 Author: Teramoto Ikuhiro Date: Thu Nov 20 02:16:39 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.2% (5788 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 8984b23ee..405463c05 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-20 01:47+0000\n" +"PO-Revision-Date: 2025-11-20 03:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -4586,7 +4586,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "Fix all topology columns" -msgstr "" +msgstr "??????????????" #. Tag: refpurpose #, no-c-format @@ -5369,7 +5369,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "Enhanced: 2.0 added support for hasZ." -msgstr "" +msgstr "Enhanced: 2.0 hasZ??????" #. Tag: para #, no-c-format @@ -5377,6 +5377,8 @@ msgid "" "Enhanced: 3.6.0 added topoid and usesLargeIDs parameters." msgstr "" +"Enhanced: 3.6.0 topoid?usesLargeIDs?" +"?????????" #. Tag: para #, no-c-format @@ -5563,6 +5565,9 @@ msgid "" "identifiers forming it up (negative identifies mean the edge goes in the " "opposite direction of the input linestring)." msgstr "" +"???????????????????????" +"?????????????????? " +"(???????????????????????????)?" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 19 23:02:32 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 19 Nov 2025 23:02:32 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-164-g2138b6c Message-ID: <20251120070232.62B091A5EC1@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via 2138b6cf3caa40b2ad14566b7f948f5926146f03 (commit) from b15eee7a50004f296ab618d4e7a551f37f60387b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2138b6cf3caa40b2ad14566b7f948f5926146f03 Author: Regina Obe Date: Thu Nov 20 02:02:22 2025 -0500 Announce release of PostGIS 3.6.1 windows bundle for PostgreSQL 18 diff --git a/content/documentation/getting_started/install_windows/enabling_postgis.md b/content/documentation/getting_started/install_windows/enabling_postgis.md index c1fde57..e81d0ee 100644 --- a/content/documentation/getting_started/install_windows/enabling_postgis.md +++ b/content/documentation/getting_started/install_windows/enabling_postgis.md @@ -25,7 +25,7 @@ CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder; --- need to upgrade the postgis packaged extensions do +-- need to upgrade the postgis packaged extensions do SELECT postgis_extensions_upgrade(); ``` @@ -45,7 +45,7 @@ CREATE EXTENSION pgrouting; -- for upgrading an existing install ALTER EXTENSION pgrouting UPDATE; --- see version details +-- see version details SELECT * FROM pgr_full_version(); ``` @@ -59,7 +59,7 @@ These extension you'll find in the `extras` PostgreSQL versioned folder if you w and non-spatial data sources Note if you get an error accessing https sources, you need to define the CURL_CA_BUNDLE system environment variable to something like - C:\Program Files\PostgreSQL\15\ssl\certs\ca-bundle.crt + C:\Program Files\PostgreSQL\15\ssl\certs\ca-bundle.crt This is an option in installer for PostGIS 3.4.1 bundle and above**/ CREATE EXTENSION ogr_fdw; @@ -86,6 +86,7 @@ You will also find available in the `extras` [PostgreSQL versioned](https://winn ```postgres -- confirm you don't have any existing pre-loaded libraries, -- if you do make sure to readd when alter system +-- This seems to be no longer needed for MobilityDb 1.3.0 and up (which is part of PostGIS 3.6 bundles) SHOW shared_preload_libraries; ALTER SYSTEM SET shared_preload_libraries = 'postgis-3'; @@ -103,7 +104,7 @@ Now you are ready to enable mobilitydb in a database. CREATE EXTENSION mobilitydb; -- show current version and dependencies SELECT mobilitydb_full_version(); --- updating existing install +-- updating existing install ALTER EXTENSION mobilitydb UPDATE; ``` @@ -117,13 +118,14 @@ See the [Getting Started]({{< ref "/documentation/getting_started/" >}}) section #### pgSphere [pgSphere](https://pgsphere.org) is an extension used for managing spherical geometries. It is used primarily for managing astrononomical data. -It has no reliance on PostGIS. It is not yet packaged with the PostGIS bundle, but will be in the future. You will find the binaries +It has no reliance on PostGIS. PostGIS Windows Bundle 3.6.1 is the first version of the bundle to include this. You will find the binaries for it in the respective *extras* folder of each [PostgreSQL buildbot folder][1] of the respective PostgreSQL versions. To install, copy the files into your PostgreSQL install and run in your databases of choice ``` CREATE EXTENSION pg_sphere; +SELECT pg_sphere_version(); ``` [1]: https://winnie.postgis.net/download/windows/ diff --git a/content/documentation/getting_started/install_windows/released_versions.md b/content/documentation/getting_started/install_windows/released_versions.md index bb6d0d8..5e19155 100644 --- a/content/documentation/getting_started/install_windows/released_versions.md +++ b/content/documentation/getting_started/install_windows/released_versions.md @@ -6,20 +6,20 @@ geekdocHidden: true geekdocHiddenTocTree: false --- -PostGIS 3.6.0 came out Sept 2nd, 2025. Windows PostGIS Bundle 3.6.0 installers for PostgreSQL 18 was last released Oct 13th 2025. +PostGIS 3.6.1 came out Nov 13th, 2025. Windows PostGIS Bundle 3.6.1 installers for PostgreSQL 18 was last released Nov 20th 2025. Binaries for versions of PostgreSQL 13-18 (64-bit) available in `Unreleased PostGIS Versions` and [OSGeo downloads][5]). Installers for 18(64-bit) available on [OSGeo downloads][5] and application stackbuilder. -Installers for PostgreSQL 13-17 will be available when PostGIS 3.6.1 comes out. +Installers for PostgreSQL 13-17 will be available soon. -Note that this version does not include shp2pgsql-gui. We plan to include this in the 3.6.1 release after fixing some issues. +Note: This is the first release that includes pgSphere -PostGIS 3.6.0 bundle includes: +PostGIS 3.6.1 bundle includes: - * PostGIS 3.6.0 with MVT support, with raster, [GEOS](https://libgeos.org/posts/2025-08-21-geos-3-14-released/) 3.14.0, [PROJ](https://proj.org/download.html#past-releases) 8.2.1, [SFCGAL](http://sfcgal.org) support (2.2.0), address_standardizer, topology - * PostGIS Tiger geocoder extension - Tiger 2024 - * pgRouting 4.0 [pgRouting 4.0.0-alpha](https://docs.pgrouting.org/4.0/en/index.html) + * PostGIS 3.6.1 with MVT support, with raster, [GEOS](https://libgeos.org/posts/2025-08-21-geos-3-14-released/) 3.14.1, [PROJ](https://proj.org/download.html#past-releases) 8.2.1, [SFCGAL](http://sfcgal.org) support (2.2.0), address_standardizer, topology + * PostGIS Tiger geocoder extension - Tiger 2025 + * pgRouting 4.0 [pgRouting 4.0.0](https://docs.pgrouting.org/4.0/en/index.html) * Commandline raster loader (raster2pgsql), shapefile import/export (shp2pgsql,pgsql2shp) - * Commandline [osm2pgrouting main](https://github.com/pgRouting/osm2pgrouting/wiki/Documentation-for-osm2pgrouting-v2.3) for loading data from .osm files into pgRouting routable format + * Commandline [osm2pgrouting 3.0.0](https://github.com/pgRouting/osm2pgrouting/tree/v3.0.0) for loading data from .osm files into pgRouting routable format * [ogrfdw 1.1.7](https://github.com/pramsey/pgsql-ogr-fdw/releases/tag/v1.1.7) - spatial foreign data wrapper for reading both spatial (spatial columns become postgis geometry) and non-spatial data. [IMPORT FOREIGN SCHEMA](http://www.postgresonline.com/journal/archives/359-Import-Foreign-Schema-for-ogr_fdw-for-PostgreSQL-9.5.html) support @@ -29,7 +29,8 @@ PostGIS 3.6.0 bundle includes: * [h3-pg](https://github.com/zachasme/h3-pg) 4.1.4 for using Uber h3 api and converting h3 index representations to postgis geometry/geography/raster (raster support is new in this release). * [MobilityDB](https://mobilitydb.com) [v1.3.0-alpha](https://github.com/MobilityDB/MobilityDB/releases/tag/v1.3.0-alpha) - for managing trajectories. Includes many temporal spatial types and functions for them. Refer to [Enabling PostGIS Extensions: MobilityDb](../enabling_postgis/#mobilitydb) for guidance. + for managing trajectories. Includes many temporal spatial and non-spatial types and functions and operators for them. Refer to [Enabling PostGIS Extensions: MobilityDb](../enabling_postgis/#mobilitydb) for guidance. + * [pgSphere](https://github.com/postgrespro/pgsphere)[1.5.2](https://github.com/postgrespro/pgsphere/releases/tag/1.5.2) for spherical geometries. (NEW in this release) The simplest way to get PostGIS on Windows for the EnterpriseDb Windows PostgreSQL distribution is using the StackBuilder. ----------------------------------------------------------------------- Summary of changes: .../install_windows/enabling_postgis.md | 12 +++++++----- .../install_windows/released_versions.md | 19 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) hooks/post-receive -- postgis.net From git at osgeo.org Thu Nov 20 01:47:52 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 20 Nov 2025 01:47:52 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-215-g0365d984e Message-ID: <20251120094752.A6A761A6C89@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 0365d984e9a0368b0973f60f6b3421c1b00b4aae (commit) from 889850c0c4719b62e05738f06f0f94dbcff8f989 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0365d984e9a0368b0973f60f6b3421c1b00b4aae Author: Teramoto Ikuhiro Date: Thu Nov 20 08:23:46 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.2% (5789 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 405463c05..dd83f809f 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-20 03:47+0000\n" +"PO-Revision-Date: 2025-11-20 09:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -4076,6 +4076,16 @@ msgid "" "linkend=\"TopologyPolygonize\"/>) may intentionally leave the fields unset, " "which is why the documentation flags their behaviour explicitly." msgstr "" +"?????????????????????????????????????? " +"????" +"??????????????????????????????????????" +"????next_left_edge??????next_right_edge??????????? " +"?????????????next_*?????????????????????????????????????" +"???????????????????????????? (????)??????????????????????" +"??????????????????????????" #. Tag: title #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 20 19:47:51 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 20 Nov 2025 19:47:51 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-216-g70a3036ea Message-ID: <20251121034751.AC1AD4FC1@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 70a3036ea59c6396a351ff6a60b652b1396287d4 (commit) from 0365d984e9a0368b0973f60f6b3421c1b00b4aae (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 70a3036ea59c6396a351ff6a60b652b1396287d4 Author: Teramoto Ikuhiro Date: Fri Nov 21 02:22:52 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.3% (5793 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index dd83f809f..4f640da6f 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-20 09:47+0000\n" +"PO-Revision-Date: 2025-11-21 03:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -4577,7 +4577,8 @@ msgstr "" msgid "" "Fixes topogeometry corruption caused by upgrade to postgis_topology 3.6.0 " "and higher" -msgstr "" +msgstr "postgis_topology?3.6." +"0????????????????????????????????????" #. Tag: para #, no-c-format @@ -4587,11 +4588,15 @@ msgid "" "topogeometries created before the upgrade. This function fixes this " "corruption in affected tables." msgstr "" +"PostGIS????? 3.6.0????3.6.0????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"?1??????" #. Tag: para #, no-c-format msgid "Availability: 3.6.1" -msgstr "" +msgstr "Availability: 3.6.1" #. Tag: para #, no-c-format @@ -5586,6 +5591,9 @@ msgid "" "Existing edges and faces may be split by the line. New nodes and faces may " "be added, in addition to new edges." msgstr "" +"??????????????????????????????????????" +"??????????????????????????????????????" +"?????????????????????????????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Fri Nov 21 00:47:51 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 21 Nov 2025 00:47:51 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-217-g963a8629d Message-ID: <20251121084752.067275FEF@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 963a8629dac53ba8c719151de4be5a01b236be66 (commit) from 70a3036ea59c6396a351ff6a60b652b1396287d4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 963a8629dac53ba8c719151de4be5a01b236be66 Author: Teramoto Ikuhiro Date: Fri Nov 21 07:15:39 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.3% (5796 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 4f640da6f..501aade3b 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-21 03:47+0000\n" +"PO-Revision-Date: 2025-11-21 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -8773,6 +8773,13 @@ msgid "" "raster_cheatsheet.html, postgis_cheatsheet." "html" msgstr "" +"make cheatsheets?HTML??????????????????" +"????????????????????????????xsltproc??????d" +"oc?????topology_cheatsheet." +"html?tiger_geocoder_cheatsheet." +"html?raster_cheatsheet." +"html?postgis_cheatsheet." +"html?4??????????????" #. Tag: para #, no-c-format @@ -8794,7 +8801,8 @@ msgstr "PostGIS?????????????????" msgid "" "The PostGIS extensions are built and installed automatically when PostgreSQL " "extension support is available." -msgstr "" +msgstr "PostGIS?????????PostgreSQL?????????????????????" +"????????????" #. Tag: para #, no-c-format @@ -9225,6 +9233,8 @@ msgid "" "Windows installation packages include the address_standardizer so you can " "move straight to the CREATE EXTENSION step." msgstr "" +"Windows????????address_standardizer??????CREATE " +"EXTENSION?????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Fri Nov 21 01:58:06 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 21 Nov 2025 01:58:06 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-218-g6bc133599 Message-ID: <20251121095807.3FB9A7250@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 6bc133599bd77505649192a48e5986dd85cb5633 (commit) from 963a8629dac53ba8c719151de4be5a01b236be66 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6bc133599bd77505649192a48e5986dd85cb5633 Author: Lo?c Bartoletti Date: Fri Nov 21 07:14:14 2025 +0100 ci(Cirrus): Bump FreeBSD to 14.3 diff --git a/.cirrus.yml b/.cirrus.yml index 25feb7449..e0d05e80b 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -56,9 +56,9 @@ task: cpu: ${NCPU} memory: 24G matrix: - - name: 14.2-RELEASE + - name: 14.3-RELEASE freebsd_instance: - image_family: freebsd-14-2 + image_family: freebsd-14-3 task: name: macOS ----------------------------------------------------------------------- Summary of changes: .cirrus.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Nov 22 01:27:54 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 22 Nov 2025 01:27:54 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-165-g8d5febd Message-ID: <20251122092754.88D891646D3@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via 8d5febd35c858a2373246ae47d422da787435d02 (commit) from 2138b6cf3caa40b2ad14566b7f948f5926146f03 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8d5febd35c858a2373246ae47d422da787435d02 Author: Regina Obe Date: Sat Nov 22 04:27:36 2025 -0500 Update to note PostGIS Bundle Windows 3.6.1 13-17 are now released diff --git a/content/documentation/getting_started/install_windows/released_versions.md b/content/documentation/getting_started/install_windows/released_versions.md index 5e19155..f8010ec 100644 --- a/content/documentation/getting_started/install_windows/released_versions.md +++ b/content/documentation/getting_started/install_windows/released_versions.md @@ -6,7 +6,7 @@ geekdocHidden: true geekdocHiddenTocTree: false --- -PostGIS 3.6.1 came out Nov 13th, 2025. Windows PostGIS Bundle 3.6.1 installers for PostgreSQL 18 was last released Nov 20th 2025. +PostGIS 3.6.1 came out Nov 13th, 2025. Windows PostGIS Bundle 3.6.1 installers for PostgreSQL 13-18 was last released Nov 20th-22nd 2025. Binaries for versions of PostgreSQL 13-18 (64-bit) available in `Unreleased PostGIS Versions` and [OSGeo downloads][5]). Installers for 18(64-bit) available on [OSGeo downloads][5] and application stackbuilder. Installers for PostgreSQL 13-17 will be available soon. @@ -30,7 +30,7 @@ PostGIS 3.6.1 bundle includes: for using Uber h3 api and converting h3 index representations to postgis geometry/geography/raster (raster support is new in this release). * [MobilityDB](https://mobilitydb.com) [v1.3.0-alpha](https://github.com/MobilityDB/MobilityDB/releases/tag/v1.3.0-alpha) for managing trajectories. Includes many temporal spatial and non-spatial types and functions and operators for them. Refer to [Enabling PostGIS Extensions: MobilityDb](../enabling_postgis/#mobilitydb) for guidance. - * [pgSphere](https://github.com/postgrespro/pgsphere)[1.5.2](https://github.com/postgrespro/pgsphere/releases/tag/1.5.2) for spherical geometries. (NEW in this release) + * [pgSphere](https://github.com/postgrespro/pgsphere)[1.5.2](https://github.com/postgrespro/pgsphere/releases/tag/1.5.2) for spherical geometries. (NEW in this release) The simplest way to get PostGIS on Windows for the EnterpriseDb Windows PostgreSQL distribution is using the StackBuilder. ----------------------------------------------------------------------- Summary of changes: .../getting_started/install_windows/released_versions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- postgis.net From git at osgeo.org Sun Nov 23 03:27:12 2025 From: git at osgeo.org (git at osgeo.org) Date: Sun, 23 Nov 2025 03:27:12 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-166-g08ae400 Message-ID: <20251123112712.DDDF2169070@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via 08ae400be942693744b2ae3508cec7ed58d32fbf (commit) from 8d5febd35c858a2373246ae47d422da787435d02 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 08ae400be942693744b2ae3508cec7ed58d32fbf Author: Regina Obe Date: Sun Nov 23 06:27:04 2025 -0500 Minor clarification on where to find PostGIS Bundle diff --git a/content/documentation/getting_started/install_windows/released_versions.md b/content/documentation/getting_started/install_windows/released_versions.md index f8010ec..73619da 100644 --- a/content/documentation/getting_started/install_windows/released_versions.md +++ b/content/documentation/getting_started/install_windows/released_versions.md @@ -38,7 +38,7 @@ Refer to [An Almost Idiot's Guide Installing PostGIS on Windows][4] or watch the video [Getting started with PostGIS and QGIS on windows][8] 1. Download and install PostgreSQL [from EnterpriseDB](https://www.postgresql.org/download/windows/). - 2. Run the "StackBuilder" utility and install the PostGIS add-on. + 2. Run the "StackBuilder" utility under *Spatial Extensions*, choose the latest PostGIS bundle option. If you want to use the zip, setup, and setup source files directly they are available: ----------------------------------------------------------------------- Summary of changes: .../documentation/getting_started/install_windows/released_versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- postgis.net From trac at osgeo.org Mon Nov 24 07:40:20 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 24 Nov 2025 15:40:20 -0000 Subject: [PostGIS] #6021: woodie failing on codespell In-Reply-To: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> References: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> Message-ID: <061.688c24497cec1a3924630090ca685710@osgeo.org> #6021: woodie failing on codespell ---------------------+-------------------------------------- Reporter: robe | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Website Management, Bots Component: build | Version: 3.5.x Resolution: | Keywords: ---------------------+-------------------------------------- Comment (by robe): I'm rebuilding woodie universal without codespell, but also building it with noble. I think it's best to go with nicola's idea of having a dedicated codespell job. Perhaps on GHA instead with a vanilla debian image. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Nov 24 07:43:10 2025 From: trac at osgeo.org (PostGIS) Date: Mon, 24 Nov 2025 15:43:10 -0000 Subject: [PostGIS] #5956: winnie failing on topology regress In-Reply-To: <046.4c3a64dfffcda4d942f4e73df0be9b0f@osgeo.org> References: <046.4c3a64dfffcda4d942f4e73df0be9b0f@osgeo.org> Message-ID: <061.afe8fe49fe8a78d2c0e226d1368371b6@osgeo.org> #5956: winnie failing on topology regress ---------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.6.2 Component: QA/buildbots | Version: master Resolution: fixed | Keywords: ---------------------------+--------------------------- Changes (by robe): * milestone: PostGIS 3.7.0 => PostGIS 3.6.2 * resolution: => fixed * status: new => closed Comment: Seems to work okay with my new tool-chain which is gcc 13.0 and I turned back on topology testing on 3.6 chain too. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Nov 25 11:15:12 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 25 Nov 2025 19:15:12 -0000 Subject: [PostGIS] #5941: Support GDT_Float16 Pixel Type In-Reply-To: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> References: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> Message-ID: <064.cb9f15758bdcfbd76a408fcf98076752@osgeo.org> #5941: Support GDT_Float16 Pixel Type --------------------------+--------------------------- Reporter: pramsey | Owner: robe Type: enhancement | Status: new Priority: high | Milestone: PostGIS 3.7.0 Component: raster | Version: master Resolution: | Keywords: --------------------------+--------------------------- Changes (by robe): * component: postgis => raster * owner: pramsey => robe -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Nov 25 11:15:47 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 25 Nov 2025 19:15:47 -0000 Subject: [PostGIS] #5941: Support GDT_Float16 Pixel Type In-Reply-To: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> References: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> Message-ID: <064.b86c167e0ddab344eb22ebb2438af757@osgeo.org> #5941: Support GDT_Float16 Pixel Type --------------------------+--------------------------- Reporter: pramsey | Owner: pramsey Type: enhancement | Status: new Priority: high | Milestone: PostGIS 3.7.0 Component: raster | Version: master Resolution: | Keywords: --------------------------+--------------------------- Changes (by robe): * owner: robe => pramsey -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Nov 25 11:29:46 2025 From: trac at osgeo.org (PostGIS) Date: Tue, 25 Nov 2025 19:29:46 -0000 Subject: [PostGIS] #5776: ST_LineSubstring 3D support In-Reply-To: <048.96e8fdb3535d14517c85bab7d52c512d@osgeo.org> References: <048.96e8fdb3535d14517c85bab7d52c512d@osgeo.org> Message-ID: <063.d927032ea4a5847a98829fbe3b40649f@osgeo.org> #5776: ST_LineSubstring 3D support --------------------------+--------------------------- Reporter: vla123 | Owner: pramsey Type: enhancement | Status: new Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: 3.4.x Resolution: | Keywords: --------------------------+--------------------------- Comment (by robe): Hmm well it does do something with 3D linestrings though perhaps not as expected. {{{ SELECT ST_AsText(ST_LineSubstring(ST_GeomFromText('LINESTRING Z(0 0 0, 0 2 5, 0 10 10)'), 0,0.5)) }}} Yields: {{{ LINESTRING Z (0 0 0,0 2 5,0 5 6.875) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Nov 25 11:34:12 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 25 Nov 2025 11:34:12 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-219-ge137ea4cb Message-ID: <20251125193418.B485319AC22@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via e137ea4cb571d659520bb25d803d24a51b4d5850 (commit) from 6bc133599bd77505649192a48e5986dd85cb5633 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e137ea4cb571d659520bb25d803d24a51b4d5850 Author: Regina Obe Date: Tue Nov 25 14:33:25 2025 -0500 Minor doc cleanup Add 3.7 to version what's new section diff --git a/doc/extras_tigergeocoder.xml b/doc/extras_tigergeocoder.xml index 8ddd36ab8..2889f6286 100644 --- a/doc/extras_tigergeocoder.xml +++ b/doc/extras_tigergeocoder.xml @@ -52,7 +52,7 @@ you can upgrade the scripts using the accompanying upgrade_geocoder.bat Nominatim uses OpenStreetMap gazeteer formatted data. It requires osm2pgsql for loading the data together with PostgreSQL and PostGIS. It is packaged as a webservice interface and seems designed to be called as a webservice. Just like the TIGER Geocoder, it has both a geocoder and a reverse geocoder component. From the documentation, it is unclear if it has a pure SQL interface like the TIGER Geocoder, or if a good deal of the logic is implemented in the web interface. - GIS Graphy also utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It comes with a loader to load OSM data and similar to Nominatim is capable of geocoding not just US. Much like Nominatim, it runs as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also has a reverse geocoder among some other neat features. + GIS Graphy can utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with some other sources. It comes with a loader to load OSM data and similar to Nominatim is capable of geocoding not just US. Much like Nominatim, it runs as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also has a reverse geocoder among some other neat features. diff --git a/doc/po/templates/postgis-manual.pot b/doc/po/templates/postgis-manual.pot index af249573e..502fcb873 100644 --- a/doc/po/templates/postgis-manual.pot +++ b/doc/po/templates/postgis-manual.pot @@ -1937,12 +1937,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/xsl-config.xml b/doc/xsl-config.xml index c4395a8fa..fe373c755 100644 --- a/doc/xsl-config.xml +++ b/doc/xsl-config.xml @@ -21,6 +21,7 @@ + 3.6 3.6 3.5 3.4 ----------------------------------------------------------------------- Summary of changes: doc/extras_tigergeocoder.xml | 2 +- doc/po/templates/postgis-manual.pot | 13 +++++++------ doc/xsl-config.xml | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 25 11:37:57 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 25 Nov 2025 11:37:57 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-220-gb4c473dc9 Message-ID: <20251125193758.6A32619AD60@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via b4c473dc9c6a339e8bebbfd31cc02ced8c957cbf (commit) from e137ea4cb571d659520bb25d803d24a51b4d5850 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b4c473dc9c6a339e8bebbfd31cc02ced8c957cbf Author: Weblate Date: Tue Nov 25 19:35:36 2025 +0000 Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ diff --git a/doc/po/be/postgis-manual.po b/doc/po/be/postgis-manual.po index 3cb9ec61e..16d5f5820 100644 --- a/doc/po/be/postgis-manual.po +++ b/doc/po/be/postgis-manual.po @@ -2082,12 +2082,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/da/postgis-manual.po b/doc/po/da/postgis-manual.po index f8c3096d2..a0148f11c 100644 --- a/doc/po/da/postgis-manual.po +++ b/doc/po/da/postgis-manual.po @@ -1949,12 +1949,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/de/postgis-manual.po b/doc/po/de/postgis-manual.po index d4d181b5d..72e046099 100644 --- a/doc/po/de/postgis-manual.po +++ b/doc/po/de/postgis-manual.po @@ -2498,21 +2498,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy n?tzt " -"ebenfalls PostGIS und arbeitet so wie Nominatim ebenfalls mit Daten von " -"OpenStreetMap (OSM). Es beinhaltet einen Loader, um OSM-Daten zu " -"importieren. ?hnlich wie Nominatim kann es auch f?r die Geokodierung " -"au?erhalb der USA verwendet werden. So wie Nominatim l?uft es als Webservice " -"und ben?tigt Java 1.5, Servlet Apps und Solr. GisGraphy kann " -"plattform?bergreifend genutzt werden und hat ebenfalls einen invertierten " -"Geokodierer zusammen mit anderen geschickten Funktionen." #. Tag: refpurpose #, no-c-format @@ -52582,6 +52575,24 @@ msgstr "2.5/3D-Unterst?tzung" msgid "Supports geography" msgstr "Unterst?tzt Geographie" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy n?tzt " +#~ "ebenfalls PostGIS und arbeitet so wie Nominatim ebenfalls mit Daten von " +#~ "OpenStreetMap (OSM). Es beinhaltet einen Loader, um OSM-Daten zu " +#~ "importieren. ?hnlich wie Nominatim kann es auch f?r die Geokodierung " +#~ "au?erhalb der USA verwendet werden. So wie Nominatim l?uft es als " +#~ "Webservice und ben?tigt Java 1.5, Servlet Apps und Solr. GisGraphy kann " +#~ "plattform?bergreifend genutzt werden und hat ebenfalls einen invertierten " +#~ "Geokodierer zusammen mit anderen geschickten Funktionen." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/es/postgis-manual.po b/doc/po/es/postgis-manual.po index 8e63d813b..878adeece 100644 --- a/doc/po/es/postgis-manual.po +++ b/doc/po/es/postgis-manual.po @@ -2265,20 +2265,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy tambi?n " -"utiliza PostGIS y como Nominatim trabaja con datos de OpenStreetMap (OSM). " -"Viene con un cargador para cargar datos OSM y, al igual que Nominatim es " -"capaz de geocodificar no solo USA. Similar a Nominatim, se ejecuta como " -"servicio web y se apoya en Java 1.5, aplicaciones Servlet, Soir. GisGraphy " -"es multiplataforma y tambi?n tiene un geocodificador inverso entre otras " -"buenas caracter?sticas." #. Tag: refpurpose #, no-c-format @@ -43200,6 +43194,23 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy tambi?n " +#~ "utiliza PostGIS y como Nominatim trabaja con datos de OpenStreetMap " +#~ "(OSM). Viene con un cargador para cargar datos OSM y, al igual que " +#~ "Nominatim es capaz de geocodificar no solo USA. Similar a Nominatim, se " +#~ "ejecuta como servicio web y se apoya en Java 1.5, aplicaciones Servlet, " +#~ "Soir. GisGraphy es multiplataforma y tambi?n tiene un geocodificador " +#~ "inverso entre otras buenas caracter?sticas." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/fr/postgis-manual.po b/doc/po/fr/postgis-manual.po index fbd7b03d3..38a0ca9db 100644 --- a/doc/po/fr/postgis-manual.po +++ b/doc/po/fr/postgis-manual.po @@ -2504,21 +2504,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy utilise " -"?galement PostGIS et, comme Nominatim, fonctionne avec des donn?es " -"OpenStreetMap (OSM). Il est livr? avec un chargeur pour charger les donn?es " -"OSM et, comme Nominatim, il est capable de g?ocoder d'autres pays que les " -"?tats-Unis. Tout comme Nominatim, il fonctionne comme un service web et " -"s'appuie sur Java 1.5, Servlet apps, Solr. GisGraphy est multiplateforme et " -"dispose ?galement d'un g?ocodeur invers? parmi d'autres fonctionnalit?s " -"int?ressantes." #. Tag: refpurpose #, no-c-format @@ -52597,6 +52590,24 @@ msgstr "Support 2.5/3D" msgid "Supports geography" msgstr "Prise en charge du type geography" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy utilise " +#~ "?galement PostGIS et, comme Nominatim, fonctionne avec des donn?es " +#~ "OpenStreetMap (OSM). Il est livr? avec un chargeur pour charger les " +#~ "donn?es OSM et, comme Nominatim, il est capable de g?ocoder d'autres pays " +#~ "que les ?tats-Unis. Tout comme Nominatim, il fonctionne comme un service " +#~ "web et s'appuie sur Java 1.5, Servlet apps, Solr. GisGraphy est " +#~ "multiplateforme et dispose ?galement d'un g?ocodeur invers? parmi " +#~ "d'autres fonctionnalit?s int?ressantes." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/it_IT/postgis-manual.po b/doc/po/it_IT/postgis-manual.po index 0b5483d22..c54c83a8c 100644 --- a/doc/po/it_IT/postgis-manual.po +++ b/doc/po/it_IT/postgis-manual.po @@ -2387,12 +2387,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 501aade3b..ddd03a57d 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -12,8 +12,8 @@ msgstr "" "POT-Creation-Date: 2025-11-13 16:23+0000\n" "PO-Revision-Date: 2025-11-21 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,10 +54,10 @@ msgid "" "corresponding ." msgstr "" "??????????????????????????????????????" -"?????????????????? POSTGIS_GDAL_ENABLED_DRIVERS?POSTGIS_ENABLE_OUTDB_RASTERS " -"?????????????????????????????????" -"???????????" +"?????????????????? POSTGIS_GDAL_ENABLED_DRIVERS?POSTGIS_ENABLE_OUTDB_RASTERS ?????????" +"???????????????????????????????????" #. Tag: para #, no-c-format @@ -101,11 +101,11 @@ msgid "" "CLUSTER/environment where the " "placeholders refer to the PostgreSQL major version and cluster name." msgstr "" -"?????OS??????????Ubuntu?Debian??apt-" -"postgresql????PostgreSQL??????????????/etc/" -"postgresql/MAJOR/CLUSTER/environment (MAJRO???????????CLUSTER????????" -"????)????????????" +"?????OS??????????Ubuntu?Debian??apt-postgresql????" +"PostgreSQL??????????????/etc/postgresql/" +"MAJOR/CLUSTER/" +"environment (MAJRO???????????CLUSTER?????????" +"???)????????????" #. Tag: para #, no-c-format @@ -149,8 +149,9 @@ msgid "" "If you have compiled and installed the extensions/postgis modules, you can " "turn a database into a spatial one using the EXTENSION mechanism." msgstr "" -"extensions/postgis??????????????????????????EXTENSI" -"ON?????????????????????????????????????" +"extensions/postgis??????????????????????????" +"EXTENSION??????????????????????????????????" +"???" #. Tag: para #, no-c-format @@ -325,8 +326,8 @@ msgid "" "Use the function to upgrade " "to the latest version you have installed." msgstr "" -"???????????????????????????????????? ????????" +"????????????????????????????????????" +" ????????" #. Tag: para #, no-c-format @@ -338,10 +339,10 @@ msgid "" "extension." msgstr "" "PostGIS 2.5????????????????????????????? " -"ALTER EXTENSION?postgis_extensions_upgrade()?????????? ???????????????????p" -"ostgis_raster???????????????????????????" -"???????" +"ALTER EXTENSION?postgis_extensions_upgrade()?????????? ???????????????????" +"postgis_raster??????????????????????" +"????????????" #. Tag: para #, no-c-format @@ -425,9 +426,9 @@ msgid "" "extensions and migrate your data there." msgstr "" "??????????????????????????????????????" -"???????????????????????????????" -"?????????????????????HARD UPGRADE???????????????????????" +"??????????????????????????????????????" +"??????????????HARD UPGRADE???????????????????????" #. Tag: title #, no-c-format @@ -684,9 +685,9 @@ msgid "" "postgresql.conf or postgresql.auto.conf by using " "the ALTER SYSTEM command." msgstr "" -"postgresql.conf???postgresql.auto." -"conf???????? ALTER " -"SYSTEM??????????????????????????????" +"postgresql.conf???postgresql.auto.conf?????" +"??? ALTER SYSTEM?????????????????????" +"?????????" #. Tag: para #, no-c-format @@ -725,10 +726,10 @@ msgid "" "they are in an inherited hierarchy and avoids paying the planner penalty " "otherwise." msgstr "" -"????????????????????????????" -"??????\"partition\"??????????????????????????" -"??????????????????????????????????????" -"??????????????" +"??????????????????????????????????" +"\"partition\"????????????????????????????????" +"??????????????????????????????????????" +"????????" #. Tag: link #, no-c-format @@ -1258,9 +1259,9 @@ msgid "" msgstr "" "????????????????????PostgreSQL?????????????" "??????????????????????????????????????" -"?????????????????????lex (lexicon, ??)?gaz (" -"gazetteer, ???)???rules????????????????????????" -"??????????????????" +"?????????????????????lex (lexicon, ??)?gaz " +"(gazetteer, ???)???rules???????????????????????" +"???????????????????" #. Tag: para #, no-c-format @@ -2061,8 +2062,9 @@ msgid "" "Using tables packaged with tiger geocoder. This example only works if you " "installed postgis_tiger_geocoder." msgstr "" -"TIGER????????????????????????????postgis" -"_tiger_geocoder?????????????????????" +"TIGER????????????????????????????" +"postgis_tiger_geocoder??????????????????" +"???" #. Tag: para #, no-c-format @@ -2117,9 +2119,9 @@ msgid "" "located in the extras/history_table directory of the " "PostGIS source tree." msgstr "" -"history_table?????????PL/" -"pgSQL????????PostGIS???????extras/" -"history_table?????????????" +"history_table?????????PL/pgSQL????????" +"PostGIS???????extras/history_table????????" +"?????" #. Tag: para #, no-c-format @@ -2249,15 +2251,16 @@ msgid "" msgstr "" "????????????TIGER (Topologically Integrated Geographic Encoding and Referencing " -"system ) / Line and Master Address database " -"export????????????PL/pgSQL?????????????" +"system ) / Line and Master Address database export??????????" +"??PL/pgSQL?????????????" #. Tag: para #, no-c-format msgid "" "There are four components to the geocoder: the data loader functions, the " "address normalizer, the address geocoder, and the reverse geocoder." -msgstr "??????????????????????????????????????" +msgstr "" +"??????????????????????????????????????" "????????" #. Tag: para @@ -2280,9 +2283,9 @@ msgid "" "skeleton base tables from which all the TIGER-loaded tables inherit." msgstr "" "TIGER????????????????????????????????????" -"??????????????????????????????????????" -"???????????????????tiger???????" -"?????????????????" +"?????????????????????????????????????" +"????????????????????tiger??????" +"??????????????????" #. Tag: para #, no-c-format @@ -2296,14 +2299,14 @@ msgid "" "faces, edges, etc located in the " "tiger schema." msgstr "" -"?????tiger_data???????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"???????ma_addr?ma_edges????" -"????????????????????????????????????addr?faces?edges?????????????????? " -"tiger????????????" +"?????tiger_data??????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"????????ma_addr?ma_edges???" +"?????????????????????????????????????" +"addr?faces?edges?" +"????????????????? tiger?????????" +"???" #. Tag: para #, no-c-format @@ -2341,13 +2344,13 @@ msgid "" "have data from tiger_2010 and want to replace with tiger_2015, refer to " "" msgstr "" -"TIGER?????? (tiger_2010)???????????extras/" -"tiger????upgrade_geocoder.bat / .sh " -"????????????????????? tiger_2010 ? " -"tiger_2011 ????????????county?????state????????????????????" -"??????tiger_2010?????????????tiger_2015?????????" -"??? ?????????" +"TIGER?????? (tiger_2010)???????????extras/tiger????" +"upgrade_geocoder.bat / .sh ????????????????????? " +"tiger_2010 ? tiger_2011 ???????" +"?????county?????state????" +"??????????????????????tiger_2010???????????" +"??tiger_2015???????????? ?????????" #. Tag: para #, no-c-format @@ -2355,9 +2358,9 @@ msgid "" "You can install the TIGER Geocoder with the PostgreSQL extension model. " "Refer to for details." msgstr "" -"TIGER???????PostgreSQL???????????????????????" -"???????????????" +"TIGER???????PostgreSQL????????????????????????" +"????????????" +"??" #. Tag: para #, no-c-format @@ -2387,16 +2390,17 @@ msgid "" "number the worse the result." msgstr "" "?????????????????????????????????TIGER???" -"??????????????????????????????????????" -"??????????????????????????????????????" -"?????????????????????????" +"?????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????" #. Tag: para #, no-c-format msgid "" "The reverse_geocode function is useful for deriving the " "street address and cross streets of a GPS location." -msgstr "reverse_geocode???GPS?????????????????" +msgstr "" +"reverse_geocode???GPS?????????????????" "???????" #. Tag: para @@ -2443,8 +2447,8 @@ msgid "" "There are a couple other open source geocoders for PostGIS, that unlike the " "TIGER Geocoder have the advantage of multi-country geocoding support" msgstr "" -"PostGIS???????????????????????????TIGER?????" -"???????????????????????????????" +"PostGIS???????????????????????????TIGER????" +"????????????????????????????????" #. Tag: para #, no-c-format @@ -2459,30 +2463,24 @@ msgid "" "implemented in the web interface." msgstr "" "Nominatim??OpenStreetMap?????????????PostgreSQL?PostGIS?????" -"??????????osm2pgsql??????Web????????????????" -"??????Web??????????????????????TIGER??????" -"????????????????????????????????????TIGER" -"????????????SQL??????????????????????Web?" -"???????????????????????????" +"link>??OpenStreetMap?????????????PostgreSQL?PostGIS????" +"???????????osm2pgsql??????Web???????????????" +"???????Web??????????????????????TIGER?????" +"?????????????????????????????????????" +"TIGER????????????SQL??????????????????????" +"Web????????????????????????????" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS " -"Graphy??PostGIS?????????Nominatim????OpenStreetMap (OSM" -")??????????OSM??????????????Nominatim????????" -"??????????????????????Nominatim????????Web??" -"?????????Java 1.5????????????????Apache Solr????" -"?????GisGraphy?????????????????????????????" -"?????????" #. Tag: refpurpose #, no-c-format @@ -2514,10 +2512,10 @@ msgid "" "linkend=\"Install_Missing_Indexes\"/> to add just the indexes used by the " "geocoder." msgstr "" -"PostgreSQL?????????????????????????????????" -"????????????????????????" -"???????????????????????????????" +"PostgreSQL????????????????????????????????" +"??????????????????????????????????????" +"????????????????" +"??" #. Tag: para #, no-c-format @@ -2616,15 +2614,14 @@ msgid "" "to offset 10 meters from center-line off to side (L/R) of street address is " "located on." msgstr "" -"????? (???????????)???????NAD " -"83?????????????? (geomout)????normalized_address (addy)???? (rating)??????????????????????" -"????????????????????TIGER??? " -"(???????????)?PostgreSQL????????? (soundex,levenshtein)" -"????TIGER????????????????????PostGIS????????" -"??????????????????????????????????????" -"?????????????????????/????????????????10" -"???????" +"????? (???????????)???????NAD 83???????????" +"??? (geomout)????normalized_address (addy)???? " +"(rating)??????????????????????????????????" +"????????TIGER??? (???????????)?PostgreSQL??????" +"??? (soundex,levenshtein)????TIGER??????????????????" +"??PostGIS?????????????????????????????????" +"??????????????????????????????????/????" +"????????????10???????" #. Tag: para #, no-c-format @@ -2729,12 +2726,12 @@ msgstr "" "??????????????????????????????????????" "??????????????????????????????NAD83??????" "??????????????????????????????????????" -"??????????????????????????????????????" -"????10???normalized_address (addy)?NAD83?????" -"???????geomout???????rating??????????????????" -"??????????????????????????TIGER??? " -"(???????????)??PostgreSQL????????? (soundex, " -"levenshtein)??????" +"?????????????????????????????????????" +"?????10???normalized_address (addy)?NAD83????" +"????????geomout???????rating?????????????????" +"???????????????????????????TIGER??? (????" +"???????)??PostgreSQL????????? (soundex, levenshtein)???" +"???" #. Tag: para #, no-c-format @@ -2742,8 +2739,8 @@ msgid "" "Even if zip is not passed in the geocoder can guess (took about 3500 ms on " "the windows 7 box), on the windows 2003 64-bit 741 ms" msgstr "" -"????????????????????????Windows 2003 " -"64????741??????(Windows 7??3500???)?" +"????????????????????????Windows 2003 64????741?" +"?????(Windows 7??3500???)?" #. Tag: para #, no-c-format @@ -2841,7 +2838,8 @@ msgstr ">" msgid "" "Finds all tables with key columns used in geocoder joins and filter " "conditions that are missing used indexes on those columns and will add them." -msgstr "??????????????????????????????????????" +msgstr "" +"??????????????????????????????????????" "?????????????????????????" #. Tag: para @@ -2861,11 +2859,10 @@ msgstr "" "??tiger?????tiger_data?????" "???????????????????????????????????SQL??" "??????????????????????????????????????" -"??????????????????????????????????" -"?????????????????????????????????update_geocode." -"sql???????????????????" +"??????????????????????????????????????" +"?????????????????????????????" +"update_geocode.sql???????????????????" #. Tag: refpurpose #, no-c-format @@ -2961,9 +2958,9 @@ msgid "" "scripts, rerun it on the states you have already processed to get these " "additional tables." msgstr "" -"?????????????????????????TIGER???????????" -"??????????????????????????????????Loader_Ge" -"nerate_Script???????" +"?????????????????????????TIGER??????????" +"???????????????????????????????????" +"Loader_Generate_Script???????" #. Tag: para #, no-c-format @@ -2990,9 +2987,9 @@ msgid "" msgstr "" "?????????????????????TIGER???????????????" "?????tiger_data???????????????????" -"?????????????????????????????TIGER " -"2010????????????????????????????????? " -"(tabblocks)?????????????????????" +"?????????????????????????????TIGER 2010????" +"????????????????????????????? (tabblocks)???" +"??????????????????" #. Tag: para #, no-c-format @@ -3027,8 +3024,8 @@ msgid "" "tract (tract), block groups (bg), and blocks (tabblocks) tables ." msgstr "" "Availability: 2.0.0 TIGER 2010??????????????????? " -"(tract)???????? (\"block groups\", bg)???? " -"(tabblocks)???????????????" +"(tract)???????? (\"block groups\", bg)???? (tabblocks)?????" +"??????????" #. Tag: para #, no-c-format @@ -3134,17 +3131,18 @@ msgid "" "when enabled, zcta5 data is loaded as a single table called zcta5_all as " "part of the nation script load." msgstr "" -"Enhanced: 2.4.1 5????????? (zcta5)??????????zcta5????" -"???????????????????????zcta5_all???????????" -"????????????????" +"Enhanced: 2.4.1 5????????? (zcta5)??????????zcta5???" +"????????????????????????zcta5_all??????????" +"?????????????????" #. Tag: para #, no-c-format msgid "" "If you want ZIP Code 5 tabulation area (zcta5) to be included in your nation " "script load, do the following:" -msgstr "5????????? " -"(zcta5)????????????????????????????:" +msgstr "" +"5????????? (zcta5)?????????????????????????" +"???:" #. Tag: para #, no-c-format @@ -3155,9 +3153,9 @@ msgid "" "linkend=\"Drop_Nation_Tables_Generate_Script\"/> before you run this script." msgstr "" "tiger_2010?????????????TIGER????????" -"??????????????????????????????????????????????????????????????" +"????????????????????????????????????????????" +"??????????????????" #. Tag: para #, no-c-format @@ -3201,9 +3199,10 @@ msgstr "" "??????????????????????????????????????" "?????????????????SQL????????????????????" "??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" +"?????????????????????????????????????" +"??????????????????????????????????????" +"?????????????????????????????????????" +"??" #. Tag: para #, no-c-format @@ -3221,8 +3220,8 @@ msgid "" msgstr "" "??????????????????????????????????????" "?????????????????norm_addy???????" -"??tiger_geocoder??????????????????????? " -"(TIGER??????????????)?" +"??tiger_geocoder??????????????????????? (TIGER???" +"???????????)?" #. Tag: para #, no-c-format @@ -3249,10 +3248,10 @@ msgid "" "tiger schema." msgstr "" "tiger_geocoder??????????????tiger?????" -"???????????/?/????????????????????????TIG" -"ER???????????????????????????????????tiger?????????????????????????????" -"??????????" +"???????????/?/????????????????????????" +"TIGER???????????????????????????????????" +"tiger??????????????????????????" +"?????????????" #. Tag: para #, no-c-format @@ -3375,8 +3374,9 @@ msgstr "" msgid "" "zip4 last 4 digits of a 9 digit ZIP Code. Availability: " "PostGIS 2.4.0." -msgstr "zip4 9????????4????Availability: PostGIS 2.4." -"0?" +msgstr "" +"zip4 9????????4????Availability: PostGIS " +"2.4.0?" #. Tag: para #, no-c-format @@ -3427,10 +3427,11 @@ msgid "" "alternative namings to the various lookup tables in the tiger schema." msgstr "" -"??????TIGER????????????????tiger??" -"???????????pagc_+??????????????????TIGER????" -"?????????????????????????????tiger???????????????????????????????????" +"??????TIGER????????????????tiger?" +"????????????pagc_+??????????????????TIGER???" +"??????????????????????????????tiger?????????????????????????????????" +"??" #. Tag: para #, no-c-format @@ -3513,8 +3514,8 @@ msgid "" "print representation of it. No other data is required aside from what is " "packaged with the geocoder." msgstr "" -"norm_addy????????????????????????" -"?TIGER????????????????????" +"norm_addy???????????????????????" +"??TIGER????????????????????" #. Tag: para #, no-c-format @@ -3577,13 +3578,12 @@ msgid "" msgstr "" "????????????????????????????????TIGER????" "??????????????????????????????????????" -"?????????????????????????????26 Court Sq." -"??????????????26 Court St. ? 26 Court Sq.??????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"???" +"?????????????????????????????26 Court Sq.???" +"???????????26 Court St. ? 26 Court Sq.?????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" #. Tag: para #, no-c-format @@ -3712,10 +3712,10 @@ msgid "" "about the process." msgstr "" "TIGER?????????PostGIS???????????????????????" -"??????????????????????????????????????" -"????????????????????????????TIGER????????" -"???????????????????????????????????TIGER?" -"?????????????????????????????????" +"?????????????????????????????????????" +"?????????????????????????????TIGER???????" +"????????????????????????????????????TIGER" +"??????????????????????????????????" #. Tag: para #, no-c-format @@ -3738,10 +3738,10 @@ msgid "" "not created a topology using the topology functions." msgstr "" "?????PostGIS??????????TIGER?????????????????" -"????????????????????????????" -"??????????????????????????????????????" -"?????????????" +"????????????????????????" +"??????????????????????????????????????" +"?????????????????" #. Tag: para #, no-c-format @@ -3806,9 +3806,9 @@ msgid "" "with tolerance 0.25 feet and then load in Boston city tiger faces, edges, " "nodes." msgstr "" -"?????????????????????????????????? " -"(2249)?????0.25??????????????TIGER????????????" -"????????????" +"?????????????????????????????????? (2249)?" +"????0.25??????????????TIGER????????????????" +"????????" #. Tag: title #, no-c-format @@ -3823,8 +3823,8 @@ msgid "" "faces, edges, nodes." msgstr "" "???????????????????????????????????? " -"(26986)?????0.25???????????????TIGER??????????" -"??????????????" +"(26986)?????0.25???????????????TIGER?????????" +"???????????????" #. Tag: para #, no-c-format @@ -3966,10 +3966,9 @@ msgid "" "without-topology configure option at build time as described in " msgstr "" -"?????????????????????????????????" -"????????????????? --without-topology " -"?????????????????" +"??????????????????????????????????????????" +"???????? --without-topology ?????????????????" #. Tag: title #, fuzzy, no-c-format @@ -3991,14 +3990,14 @@ msgid "" "faces." msgstr "" "?????????????????????edge_data? " -"node,?face????????????" -"?????????????????????" -"?????edge_data???????????????????" -"?start_node??end_node???????" -"???????????????????????? " -"(left_face)?????? (right_face)?" -"?????????????????????????2?????????????" -"?????2? (?????1???)????????????" +"node,?face??????????????" +"?????????????????????" +"???edge_data????????????????????" +"start_node??end_node????????" +"??????????????????????? (left_face)" +"?????? (right_face)????????????????" +"??????????2??????????????????2? (?????1??" +"?)????????????" #. Tag: para #, no-c-format @@ -4013,8 +4012,8 @@ msgstr "" "next_left_edge????next_right_edge?" "??????????????????????????????????????" "??????????????????????????????????????" -"???????????????????????????????" -"????????? (???? e????):" +"??????????????????????????????????????" +"?? (???? e????):" #. Tag: para #, fuzzy, no-c-format @@ -4027,10 +4026,10 @@ msgid "" "face remains on the walker?s left." msgstr "" "abs(next_left_edge)?e????????" -"?????????????????????????????????e<" -"/varname>??????????????????????????????????" -"??????????????????????????????????????" -"????????????????" +"?????????????????????????????????" +"e????????????????????????????" +"??????????????????????????????????????" +"??????????????????????" #. Tag: para #, no-c-format @@ -4080,12 +4079,13 @@ msgstr "" "????" "??????????????????????????????????????" "????next_left_edge??????next_right_edge??????????? " -"?????????????next_*?????????????????????????????????????" -"???????????????????????????? (????)??????????????????????" -"??????????????????????????" +"?????????????next_*??????????????????????" +"??????????????????????????????????????" +"????? (????)?????????" +"?????????????????????????????????????" +"??" #. Tag: title #, no-c-format @@ -4577,8 +4577,9 @@ msgstr "" msgid "" "Fixes topogeometry corruption caused by upgrade to postgis_topology 3.6.0 " "and higher" -msgstr "postgis_topology?3.6." -"0????????????????????????????????????" +msgstr "" +"postgis_topology?3.6.0???????????????????????????" +"?????????" #. Tag: para #, no-c-format @@ -5580,9 +5581,8 @@ msgid "" "identifiers forming it up (negative identifies mean the edge goes in the " "opposite direction of the input linestring)." msgstr "" -"???????????????????????" -"?????????????????? " -"(???????????????????????????)?" +"??????????????????????????????????????" +"??? (???????????????????????????)?" #. Tag: para #, no-c-format @@ -8774,11 +8774,10 @@ msgid "" "html" msgstr "" "make cheatsheets?HTML??????????????????" -"????????????????????????????xsltproc??????d" -"oc?????topology_cheatsheet." -"html?tiger_geocoder_cheatsheet." -"html?raster_cheatsheet." -"html?postgis_cheatsheet." +"????????????????????????????xsltproc??????" +"doc?????topology_cheatsheet.html?" +"tiger_geocoder_cheatsheet.html?" +"raster_cheatsheet.html?postgis_cheatsheet." "html?4??????????????" #. Tag: para @@ -8801,8 +8800,9 @@ msgstr "PostGIS?????????????????" msgid "" "The PostGIS extensions are built and installed automatically when PostgreSQL " "extension support is available." -msgstr "PostGIS?????????PostgreSQL?????????????????????" -"????????????" +msgstr "" +"PostGIS?????????PostgreSQL????????????????????" +"?????????????" #. Tag: para #, no-c-format @@ -9096,9 +9096,9 @@ msgid "" "available in your PostgreSQL instance. The address_standardizer tests will " "also kick in if you built postgis with address_standardizer support:" msgstr "" -"TIGER??????????????????PostgreSQL????????PostGIS?f" -"uzzystrmatch???????????????PostGIS?address_standardizer???" -"???????????address_standardizer??????????" +"TIGER??????????????????PostgreSQL????????PostGIS?" +"fuzzystrmatch???????????????PostGIS?address_standardizer??" +"????????????address_standardizer??????????" #. Tag: para #, no-c-format @@ -9200,11 +9200,11 @@ msgid "" "a building block for your own geocoder or use it to standardize your " "addresses for easier compare of addresses." msgstr "" -"??????????????????Post" -"GIS??????TIGER?????????????????????????" -"???????????????????????????????????????????????????" -"????????????????????????????????????" +"??????????????????" +"PostGIS??????TIGER??????????????????????????" +"????????????" +"?????????????????????????????????????" +"?????????????????????????????????????" #. Tag: para #, no-c-format @@ -9272,11 +9272,11 @@ msgstr "" "TIGER???????????????PostGIS?????????????????" "?????TIGER???????????????????????????????" "????????????????????Windows Unreleased " -"Versions?PostgreSQL??????????????share/" -"extension/postgis_tiger_geocoder.*????????????????" -"????Windows?????postgis_tige_geocoder??????????????SQL" -"?PL/pgSQL?????????OS????????" +"net/windows_downloads/\">Windows Unreleased Versions?PostgreSQL???" +"???????????share/extension/postgis_tiger_geocoder.*????????????????????Windows?????" +"postgis_tige_geocoder??????????????SQL?PL/pgSQL???????" +"??OS????????" #. Tag: title #, no-c-format @@ -9416,11 +9416,12 @@ msgid "" "staging_fold in the tiger.loader_variables table." msgstr "" -"?????????? (??????????????????)?????gisdata?????????????????????TIGER?????" -"??????????????????????????????????????" -"????????????????????????tiger.loader_variabl" -"es?????staging_fold????????????" +"?????????? (??????????????????)?????" +"gisdata?????????????????????TIGER" +"??????????????????????????????????????" +"?????????????????????????????tiger." +"loader_variables?????staging_fold?????" +"???????" #. Tag: para #, no-c-format @@ -9475,10 +9476,10 @@ msgid "" "population statistics. If you wish to load them as part of your state loads, " "run the following statement to enable them." msgstr "" -"???????bg, tract, tabbl" -"ock20???????????????????????????????" -"??????????????????????????????????????" -"??????????????????????????" +"???????bg, tract, " +"tabblock20???????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????" #. Tag: para #, no-c-format @@ -9525,7 +9526,8 @@ msgstr "" #. Tag: title #, no-c-format msgid "Using Address Standardizer Extension with Tiger geocoder" -msgstr "TIGER???????PostGIS????????????: ???????????" +msgstr "" +"TIGER???????PostGIS????????????: ???????????" #. Tag: para #, no-c-format @@ -9562,11 +9564,11 @@ msgid "" "update to improve your standardizing experience for your own needs." msgstr "" "???????????postgis_tiger_geocoder??????????" -"?????????????????????????????????????" +"?????????????????????????????????????" "?????????TIGER???????????????????????????" -"??????????????TIGER????????????????" -"???? (tiger.pagc_rules), (tiger.pagc_rules), (tiger.pagc_gaz), (tiger.pagc_lex)???????????????????????" "??????????????????" @@ -9665,13 +9667,13 @@ msgid "" "time step that should be done for upgrading (from a prior year tiger census " "data) and for new installs." msgstr "" -"tiger_2010????????????????????????????????????????????????????????????????" +"??????????????????????????????????" "??????????????????????????(?????TIGER????" -"??????)???????????????????????1????" +"??????)???????????????????????1????" #. Tag: para #, no-c-format @@ -9704,8 +9706,8 @@ msgid "" "To test that things are working as they should, try to run a geocode on an " "address in your state using " msgstr "" -"???????????????????????????????????????????????????" +"?????????????????????????" +"??????????????????????????" #. Tag: title #, no-c-format @@ -9949,8 +9951,8 @@ msgid "" "TIGER geocoder support, management functions." msgstr "" "???????????????????????????Windows????????" -"?????????????PostgreSQL?????X3D???TIGER????????" -"??????" +"?????????????PostgreSQL?????X3D???TIGER???????" +"???????" #. Tag: term #, no-c-format @@ -17437,9 +17439,8 @@ msgid "" msgstr "" "PostGIS ?????????????????????????15????????" "????????????????PostGIS???????15???????????" -"???????????" -"?????6?????????????????TIGER???????? " -"(???????????????9?????8???)?" +"????????????????6?????????????????TIGER??" +"?????? (???????????????9?????8???)?" #. Tag: para #, no-c-format @@ -50288,6 +50289,23 @@ msgstr "2.5??/3????" msgid "Supports geography" msgstr "????????" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy??" +#~ "PostGIS?????????Nominatim????OpenStreetMap (OSM)??????" +#~ "????OSM??????????????Nominatim?????????????" +#~ "?????????????????Nominatim????????Web??????" +#~ "?????Java 1.5????????????????Apache Solr??????" +#~ "???GisGraphy????????????????????????????" +#~ "??????????" + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/ka/postgis-manual.po b/doc/po/ka/postgis-manual.po index d7d86f34e..cd4cfa9ba 100644 --- a/doc/po/ka/postgis-manual.po +++ b/doc/po/ka/postgis-manual.po @@ -1939,12 +1939,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/ko_KR/postgis-manual.po b/doc/po/ko_KR/postgis-manual.po index 0593eb094..61b0aebc4 100644 --- a/doc/po/ko_KR/postgis-manual.po +++ b/doc/po/ko_KR/postgis-manual.po @@ -2192,19 +2192,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy ?? PostGIS" -"? ???? Nominatim?? OSM(OpenStreetMap) ???? ?????. OSM ???" -"? ???? ?? ??? ??? ??, Nominatim? ???? ?? ??? ??? " -"????? ? ? ????. Nominatim? ?????, ????? ???? Java " -"1.5, Servlet apps, Solr? ?????. GIS Graphy? ?? ??? ??? ???" -"?, ?? ?? ??? ?? ? ???? ??? ??? ????." #. Tag: refpurpose #, no-c-format @@ -45438,6 +45433,23 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy ?? " +#~ "PostGIS? ???? Nominatim?? OSM(OpenStreetMap) ???? ?????. " +#~ "OSM ???? ???? ?? ??? ??? ??, Nominatim? ???? ?? " +#~ "??? ??? ????? ? ? ????. Nominatim? ?????, ????" +#~ "? ???? Java 1.5, Servlet apps, Solr? ?????. GIS Graphy? ?? " +#~ "??? ??? ????, ?? ?? ??? ?? ? ???? ??? ??? ?" +#~ "???." + #, no-c-format #~ msgid "(28). A 5 digit number. Identifies a Zip Code" #~ msgstr "(28). ?? ?? ?????. ???(Zip Code)? ?????." diff --git a/doc/po/pl/postgis-manual.po b/doc/po/pl/postgis-manual.po index d045247dc..cffd5de0a 100644 --- a/doc/po/pl/postgis-manual.po +++ b/doc/po/pl/postgis-manual.po @@ -1941,12 +1941,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/pt_BR/postgis-manual.po b/doc/po/pt_BR/postgis-manual.po index 2a83b6e1d..b2570e0bd 100644 --- a/doc/po/pt_BR/postgis-manual.po +++ b/doc/po/pt_BR/postgis-manual.po @@ -2215,20 +2215,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy tamb?m " -"utiliza PostGIS e, como Nominatim, funciona com os dados OpenStreetMap " -"(OSM). Ele possui um carregador para carregar dados OSM e, correspondente ao " -"Nominatim, ? capaz de geocoding n?o s? nos EUA. Bem como Nominatim, ele " -"executa como webservice e confia no Java 1.5, Servlet apps, Solr. O " -"GisGraphy ? uma multiplataforma e tamb?m possui um geocoder reverso " -"juntamente com outros aspectos." #. Tag: refpurpose #, no-c-format @@ -45828,6 +45822,23 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy tamb?m " +#~ "utiliza PostGIS e, como Nominatim, funciona com os dados OpenStreetMap " +#~ "(OSM). Ele possui um carregador para carregar dados OSM e, correspondente " +#~ "ao Nominatim, ? capaz de geocoding n?o s? nos EUA. Bem como Nominatim, " +#~ "ele executa como webservice e confia no Java 1.5, Servlet apps, Solr. O " +#~ "GisGraphy ? uma multiplataforma e tamb?m possui um geocoder reverso " +#~ "juntamente com outros aspectos." + #, no-c-format #~ msgid "(28). A 5 digit number. Identifies a Zip Code" #~ msgstr "(28). Um n?mero de 5 d?gitos. Identifica um c?digo Zip" diff --git a/doc/po/ro/postgis-manual.po b/doc/po/ro/postgis-manual.po index 9c151d4bb..28dc76561 100644 --- a/doc/po/ro/postgis-manual.po +++ b/doc/po/ro/postgis-manual.po @@ -1958,12 +1958,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/ru/postgis-manual.po b/doc/po/ru/postgis-manual.po index 76be2eefb..869a594e0 100644 --- a/doc/po/ru/postgis-manual.po +++ b/doc/po/ru/postgis-manual.po @@ -1956,12 +1956,13 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" #. Tag: refpurpose diff --git a/doc/po/sv/postgis-manual.po b/doc/po/sv/postgis-manual.po index 2f70342a9..e053bc343 100644 --- a/doc/po/sv/postgis-manual.po +++ b/doc/po/sv/postgis-manual.po @@ -2424,20 +2424,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy anv?nder " -"ocks? PostGIS och som Nominatim arbetar med OpenStreetMap (OSM) data. Den " -"levereras med en laddare f?r att ladda OSM-data och liknar Nominatim kan " -"geokoda inte bara USA. Precis som Nominatim k?rs den som en webbtj?nst och " -"f?rlitar sig p? Java 1.5, Servlet-appar, Solr. GisGraphy ?r " -"plattformsoberoende och har ocks? en omv?nd geokodare bland n?gra andra " -"snygga funktioner." #. Tag: refpurpose #, no-c-format @@ -51533,6 +51527,23 @@ msgstr "2.5/3D-st?d" msgid "Supports geography" msgstr "St?djer geografi" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy anv?nder " +#~ "ocks? PostGIS och som Nominatim arbetar med OpenStreetMap (OSM) data. Den " +#~ "levereras med en laddare f?r att ladda OSM-data och liknar Nominatim kan " +#~ "geokoda inte bara USA. Precis som Nominatim k?rs den som en webbtj?nst " +#~ "och f?rlitar sig p? Java 1.5, Servlet-appar, Solr. GisGraphy ?r " +#~ "plattformsoberoende och har ocks? en omv?nd geokodare bland n?gra andra " +#~ "snygga funktioner." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 31af208b6..59d3fdc84 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -2448,20 +2448,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy ????? " -"???????????? PostGIS ?, ?? ? Nominatim, ?????? ? ?????? OpenStreetMap (OSM). " -"??? ???????????? ? ?????????????? ??? ???????????? ????? OSM ?, ??????? ?? " -"Nominatim, ??????? ??????????? ?? ?????? ???. ??????? ?? Nominatim, ??? " -"?????? ?? ???-?????? ? ???????????? Java 1.5, ??????? Servlet, Solr. " -"GisGraphy ? ???????????????? ? ???, ????? ????? ???????? ???????, ????????? " -"????????." #. Tag: refpurpose #, no-c-format @@ -49315,6 +49309,23 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy ????? " +#~ "???????????? PostGIS ?, ?? ? Nominatim, ?????? ? ?????? OpenStreetMap " +#~ "(OSM). ??? ???????????? ? ?????????????? ??? ???????????? ????? OSM ?, " +#~ "??????? ?? Nominatim, ??????? ??????????? ?? ?????? ???. ??????? ?? " +#~ "Nominatim, ??? ?????? ?? ???-?????? ? ???????????? Java 1.5, ??????? " +#~ "Servlet, Solr. GisGraphy ? ???????????????? ? ???, ????? ????? ???????? " +#~ "???????, ????????? ????????." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/zh_Hans/postgis-manual.po b/doc/po/zh_Hans/postgis-manual.po index 8da6b892f..a4e4198e9 100644 --- a/doc/po/zh_Hans/postgis-manual.po +++ b/doc/po/zh_Hans/postgis-manual.po @@ -2274,18 +2274,14 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"GIS Graphy also " -"utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. It " -"comes with a loader to load OSM data and similar to Nominatim is capable of " -"geocoding not just US. Much like Nominatim, it runs as a webservice and " -"relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also " -"has a reverse geocoder among some other neat features." +"GIS Graphy can " +"utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with " +"some other sources. It comes with a loader to load OSM data and similar to " +"Nominatim is capable of geocoding not just US. Much like Nominatim, it runs " +"as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is " +"cross-platform and also has a reverse geocoder among some other neat " +"features." msgstr "" -"GIS Graphy ??? " -"PostGIS???? Nominatim ???? OpenStreetMap (OSM) ??? ???????" -"????? OSM ?????? Nominatim ???????????????? ? " -"Nominatim ???????? Web ???????? Java 1.5?Servlet ?????" -"Solr? GisGraphy ??????????????????????????????" #. Tag: refpurpose #, no-c-format @@ -47395,6 +47391,22 @@ msgstr "2.5/3D ??" msgid "Supports geography" msgstr "????" +#, no-c-format +#~ msgid "" +#~ "GIS Graphy also " +#~ "utilizes PostGIS and like Nominatim works with OpenStreetMap (OSM) data. " +#~ "It comes with a loader to load OSM data and similar to Nominatim is " +#~ "capable of geocoding not just US. Much like Nominatim, it runs as a " +#~ "webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-" +#~ "platform and also has a reverse geocoder among some other neat features." +#~ msgstr "" +#~ "GIS Graphy ??? " +#~ "PostGIS???? Nominatim ???? OpenStreetMap (OSM) ??? ??????" +#~ "?????? OSM ?????? Nominatim ???????????????? " +#~ "? Nominatim ???????? Web ???????? Java 1.5?Servlet ??" +#~ "???Solr? GisGraphy ?????????????????????????" +#~ "?????" + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " ----------------------------------------------------------------------- Summary of changes: doc/po/be/postgis-manual.po | 13 +- doc/po/da/postgis-manual.po | 13 +- doc/po/de/postgis-manual.po | 39 +-- doc/po/es/postgis-manual.po | 37 ++- doc/po/fr/postgis-manual.po | 39 +-- doc/po/it_IT/postgis-manual.po | 13 +- doc/po/ja/postgis-manual.po | 500 ++++++++++++++++++++------------------- doc/po/ka/postgis-manual.po | 13 +- doc/po/ko_KR/postgis-manual.po | 36 ++- doc/po/pl/postgis-manual.po | 13 +- doc/po/pt_BR/postgis-manual.po | 37 ++- doc/po/ro/postgis-manual.po | 13 +- doc/po/ru/postgis-manual.po | 13 +- doc/po/sv/postgis-manual.po | 37 ++- doc/po/uk/postgis-manual.po | 37 ++- doc/po/zh_Hans/postgis-manual.po | 34 ++- 16 files changed, 501 insertions(+), 386 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Nov 25 15:30:41 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 25 Nov 2025 15:30:41 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-167-gcecf03e Message-ID: <20251125233043.2C79519C87B@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via cecf03eda58268d5fa03a8edf90c4b7d8f5eec7d (commit) from 08ae400be942693744b2ae3508cec7ed58d32fbf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cecf03eda58268d5fa03a8edf90c4b7d8f5eec7d Author: Paul Ramsey Date: Tue Nov 25 15:21:18 2025 -0800 Update the events page diff --git a/content/community/events/2024-posette/2026-posette-logo.png b/content/community/events/2024-posette/2026-posette-logo.png new file mode 100644 index 0000000..5afd78c Binary files /dev/null and b/content/community/events/2024-posette/2026-posette-logo.png differ diff --git a/content/community/events/2026-foss4g-asia/foss4g-asia-2026.png b/content/community/events/2026-foss4g-asia/foss4g-asia-2026.png new file mode 100644 index 0000000..5ed3d29 Binary files /dev/null and b/content/community/events/2026-foss4g-asia/foss4g-asia-2026.png differ diff --git a/content/community/events/2026-foss4g-asia/index.md b/content/community/events/2026-foss4g-asia/index.md index 47c4ccd..df9fba4 100644 --- a/content/community/events/2026-foss4g-asia/index.md +++ b/content/community/events/2026-foss4g-asia/index.md @@ -6,7 +6,7 @@ expiryDate: "2026-01-28" tags: ["FOSS4G"] eventLink: "https://foss4g.asia/2026/" location: "Nasik, India" -image: "foss4g.jpg" +image: "foss4g-asia-2026.png" geekdocHidden: true --- diff --git a/content/community/events/2026-foss4g/foss4g-2026-hiroshima-sm.jpg b/content/community/events/2026-foss4g/foss4g-2026-hiroshima-sm.jpg new file mode 100644 index 0000000..d33f784 Binary files /dev/null and b/content/community/events/2026-foss4g/foss4g-2026-hiroshima-sm.jpg differ diff --git a/content/community/events/2026-foss4g/foss4g-2026-hiroshima.png b/content/community/events/2026-foss4g/foss4g-2026-hiroshima.png new file mode 100644 index 0000000..6607fbe Binary files /dev/null and b/content/community/events/2026-foss4g/foss4g-2026-hiroshima.png differ diff --git a/content/community/events/2026-foss4g/index.md b/content/community/events/2026-foss4g/index.md new file mode 100644 index 0000000..1c14b16 --- /dev/null +++ b/content/community/events/2026-foss4g/index.md @@ -0,0 +1,50 @@ +--- +title: "FOSS4G 2026" +date: "2024-12-07" +eventDates: "2026-08-30 to 2026-09-05" +expiryDate: "2026-09-06" +tags: ["FOSS4G"] +#eventLink: "https://2026.foss4g.org/" +eventLink: "https://www.osgeo.jp/foss4g-2026-hiroshima" +location: "Hiroshima, Japan" +image: "foss4g-2026-hiroshima-sm.jpg" +geekdocHidden: true +--- + +The Free and Open Source Software for Geospatial (FOSS4G) is an annual recurring global event hosted by [OSGeo](https://www.osgeo.org). + + + +## What to Expect + +This year FOSS4G will be held in Hiroshima, Japan. + +![](foss4g-2026-hiroshima.png) + +Organized by OSGeo and with more than 15 years of experience, FOSS4G is an international annual gathering of location enthusiasts is the largest global gathering for geospatial software. + +FOSS4G brings together developers, users, decision-makers and observers from a broad spectrum of organizations and fields of operation. Through seven days of workshops, presentations, discussions, and cooperation, FOSS4G participants create effective and relevant geospatial products, standards, and protocols. + +Conference attendees are + +* Developers and Users of GeoSpatial Software +* Technical Leaders +* Private Companies +* National and International Organizations, both Governmental and NGO +* Teachers and Education Professionals +* Scientific Communities and Researchers + +and the talks cover topics such as: + +* Software status, new software/project development, benchmarking +* FOSS4G implementations in land management, crisis/disaster response, smart cities, population mapping, climate change, ocean and marine monitoring, etc. +* Data visualization: spatial analysis, manipulation and visualization of geospatial data +* Data collection, data sharing, data science, open data, big data, data exploitation platforms +* Sensors, remote sensing, laser-scanning, structure from motion +* New trends: IoT, Indoor mapping, drones, AI +* Open and reproducible science +* Standards, interoperability, SDIs +* Community & participatory FOSS4G +* FOSS4G at governmental institutions +* FOSS4G in education +* Business products powered by FOSS4G diff --git a/content/community/events/2026-pgconf-dev/index.md b/content/community/events/2026-pgconf-dev/index.md new file mode 100644 index 0000000..dfad102 --- /dev/null +++ b/content/community/events/2026-pgconf-dev/index.md @@ -0,0 +1,21 @@ +--- +title: "PgConf.Dev 2026" +date: "2025-11-24" +eventDates: "2026-05-19 to 2026-05-22" +expiryDate: "2026-05-23" +tags: ["PgCon", "PostgreSQL"] +eventLink: "https://2026.pgconf.dev/" +location: "Vancouver, Canada" +image: "pgconfdev-sm.jpg" +geekdocHidden: true +--- + +[PostgreSQL Development Conference](https://2026.pgconf.dev/) is where users, developers, and community organizers come together to focus on PostgreSQL development and community growth. + + + +Meet PostgreSQL contributors, learn about upcoming features, and discuss development problems with PostgreSQL enthusiasts. + +![](pgconfdev-sm.jpg) + +PGConf.dev 2026 will be held in Vancouver, Canada, on May 19-2 at the [Simon Fraser University - Downtown Vancouver Campus[(https://maps.app.goo.gl/Hd7Rt1he7xMurbfa6). diff --git a/content/community/events/2026-pgconf-dev/pgconfdev-sm.jpg b/content/community/events/2026-pgconf-dev/pgconfdev-sm.jpg new file mode 100644 index 0000000..1365160 Binary files /dev/null and b/content/community/events/2026-pgconf-dev/pgconfdev-sm.jpg differ diff --git a/content/community/events/2026-pgconf-dev/pgconfdev.jpg b/content/community/events/2026-pgconf-dev/pgconfdev.jpg new file mode 100644 index 0000000..ecd4153 Binary files /dev/null and b/content/community/events/2026-pgconf-dev/pgconfdev.jpg differ diff --git a/content/community/events/2026-posette/2026-posette-logo-sm.png b/content/community/events/2026-posette/2026-posette-logo-sm.png new file mode 100644 index 0000000..9db6e43 Binary files /dev/null and b/content/community/events/2026-posette/2026-posette-logo-sm.png differ diff --git a/content/community/events/2026-posette/2026-posette-logo.png b/content/community/events/2026-posette/2026-posette-logo.png new file mode 100644 index 0000000..064ce00 Binary files /dev/null and b/content/community/events/2026-posette/2026-posette-logo.png differ diff --git a/content/community/events/2026-posette/index.md b/content/community/events/2026-posette/index.md new file mode 100644 index 0000000..e648ad3 --- /dev/null +++ b/content/community/events/2026-posette/index.md @@ -0,0 +1,18 @@ +--- +title: "POSETTE 2026" +date: "2025-11-24" +eventDates: "2026-06-16 to 2026-06-18" +expiryDate: "2026-06-19" +tags: ["POSETTE", "PostgreSQL"] +eventLink: "https://posetteconf.com/2026/" +location: "Virtual" +image: "2026-posette-logo-sm.png" +geekdocHidden: true +--- + +POSETTE is a three-day free and virtual event focused on PostgreSQL +and PostgreSQL extensions and brought to you by the Open Source Postgres Team at Microsoft. + + + +POSETTE is a great conference for PostGIS users because it provides a broader view of all that is possible in [PostgreSQL](http://www.postgresql.org/) community as well as the growing family of PostgreSQL extensions. ----------------------------------------------------------------------- Summary of changes: .../events/2024-posette/2026-posette-logo.png | Bin 0 -> 25417 bytes .../events/2026-foss4g-asia/foss4g-asia-2026.png | Bin 0 -> 13144 bytes content/community/events/2026-foss4g-asia/index.md | 2 +- .../2026-foss4g/foss4g-2026-hiroshima-sm.jpg | Bin 0 -> 20794 bytes .../events/2026-foss4g/foss4g-2026-hiroshima.png | Bin 0 -> 95411 bytes .../events/{2025-foss4g => 2026-foss4g}/index.md | 17 +++++++++-------- content/community/events/2026-pgconf-dev/index.md | 21 +++++++++++++++++++++ .../pgconfdev-sm.jpg | Bin .../pgconfdev.jpg | Bin .../events/2026-posette/2026-posette-logo-sm.png | Bin 0 -> 21986 bytes .../events/2026-posette/2026-posette-logo.png | Bin 0 -> 25723 bytes content/community/events/2026-posette/index.md | 18 ++++++++++++++++++ 12 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 content/community/events/2024-posette/2026-posette-logo.png create mode 100644 content/community/events/2026-foss4g-asia/foss4g-asia-2026.png create mode 100644 content/community/events/2026-foss4g/foss4g-2026-hiroshima-sm.jpg create mode 100644 content/community/events/2026-foss4g/foss4g-2026-hiroshima.png copy content/community/events/{2025-foss4g => 2026-foss4g}/index.md (84%) create mode 100644 content/community/events/2026-pgconf-dev/index.md copy content/community/events/{2025-pgconf-dev => 2026-pgconf-dev}/pgconfdev-sm.jpg (100%) copy content/community/events/{2025-pgconf-dev => 2026-pgconf-dev}/pgconfdev.jpg (100%) create mode 100644 content/community/events/2026-posette/2026-posette-logo-sm.png create mode 100644 content/community/events/2026-posette/2026-posette-logo.png create mode 100644 content/community/events/2026-posette/index.md hooks/post-receive -- postgis.net From git at osgeo.org Tue Nov 25 15:33:24 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 25 Nov 2025 15:33:24 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-168-g8e69dfd Message-ID: <20251125233324.7FDD219CCC0@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "postgis.net". The branch, website has been updated via 8e69dfd4f6507ce8c9b9c6f0cff860f7f3101211 (commit) from cecf03eda58268d5fa03a8edf90c4b7d8f5eec7d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8e69dfd4f6507ce8c9b9c6f0cff860f7f3101211 Author: Paul Ramsey Date: Tue Nov 25 15:33:19 2025 -0800 Typo diff --git a/content/community/events/2026-pgconf-dev/index.md b/content/community/events/2026-pgconf-dev/index.md index dfad102..12d9850 100644 --- a/content/community/events/2026-pgconf-dev/index.md +++ b/content/community/events/2026-pgconf-dev/index.md @@ -18,4 +18,4 @@ Meet PostgreSQL contributors, learn about upcoming features, and discuss develop ![](pgconfdev-sm.jpg) -PGConf.dev 2026 will be held in Vancouver, Canada, on May 19-2 at the [Simon Fraser University - Downtown Vancouver Campus[(https://maps.app.goo.gl/Hd7Rt1he7xMurbfa6). +PGConf.dev 2026 will be held in Vancouver, Canada, on May 19-22 at the [Simon Fraser University - Downtown Vancouver Campus[(https://maps.app.goo.gl/Hd7Rt1he7xMurbfa6). ----------------------------------------------------------------------- Summary of changes: content/community/events/2026-pgconf-dev/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- postgis.net From git at osgeo.org Tue Nov 25 19:47:52 2025 From: git at osgeo.org (git at osgeo.org) Date: Tue, 25 Nov 2025 19:47:52 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-221-g73455f408 Message-ID: <20251126034752.993A419D28A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 73455f408ce668216148262be7daf39fe2b2010f (commit) from b4c473dc9c6a339e8bebbfd31cc02ced8c957cbf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 73455f408ce668216148262be7daf39fe2b2010f Author: Teramoto Ikuhiro Date: Wed Nov 26 02:46:11 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.3% (5798 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index ddd03a57d..774b56e20 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,10 +10,10 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-21 08:47+0000\n" +"PO-Revision-Date: 2025-11-26 03:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4050,7 +4050,7 @@ msgstr "" "??????" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "A zero value indicates that the edge is dangling on the corresponding side " "(for example an isolated edge whose incident face is the universal face " @@ -4058,6 +4058,11 @@ msgid "" "abs_next_right_edge columns exposed by the edge view are convenience projections of these absolute values." msgstr "" +"???????????????????????????? (" +"????????????? " +"0??????????????????????)? " +"edge??????abs_next_left_edge????abs_next_right_edge?????????????????????" #. Tag: para #, no-c-format @@ -5596,19 +5601,23 @@ msgstr "" "?????????????????????????????????" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "The returned edge identifiers may be either existing edges or newly created " "edges as needed to fully represent the input line as closely as possible." -msgstr "" +msgstr "??????????????????????????????????????" +"?????????????????????????????" #. Tag: para -#, no-c-format +#, fuzzy, no-c-format msgid "" "The number of newly created edges (either covering space previously " "uncovered or resulting from split of existing edges) may be limited by the " "max_edges parameter." msgstr "" +"???????????? " +"(??????????????????????????????????)? " +"max_edges???????????????????" #. Tag: para #, no-c-format @@ -5629,7 +5638,7 @@ msgstr "Enhanced: 3.2.0 ?????????????????? msgid "" "Enhanced: 3.7.0 added support for limiting the number of new edges created " "in the topology." -msgstr "" +msgstr "Enhanced: 3.7.0 ?????????????????????????" #. Tag: para #, no-c-format @@ -7227,6 +7236,9 @@ msgid "" "geometry to existing primitives. The special value -1 (default) means use " "the topology precision as tolerance." msgstr "" +"tolerance????????????????????????" +"???????????????????? -1 " +"(?????)???????????????????????????" #. Tag: para #, no-c-format @@ -7263,6 +7275,8 @@ msgid "" "Changed: 3.7.0 changes meaning of tolerance 0 to really mean 0 and -1 (new " "default) to request using the topology precision." msgstr "" +"Changed: 3.7.0 ??? 0???? 0??????-1 " +"(???????)??????????????????????????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 26 00:47:52 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 26 Nov 2025 00:47:52 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-222-gdfcc0797a Message-ID: <20251126084753.04D9419E847@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via dfcc0797a653104c62747b525afc2d95cd5a6340 (commit) from 73455f408ce668216148262be7daf39fe2b2010f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit dfcc0797a653104c62747b525afc2d95cd5a6340 Author: Teramoto Ikuhiro Date: Wed Nov 26 07:25:29 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.4% (5800 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 774b56e20..3af525ef4 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-26 03:47+0000\n" +"PO-Revision-Date: 2025-11-26 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -8775,6 +8775,12 @@ msgid "" "so no need to make comments if installing from the tar ball. Comments are " "also included as part of the CREATE EXTENSION install." msgstr "" +"??????????????????????????????????????" +"???????????????????????docbook????????????" +"???postgis_comments.sql??????????????????tar." +"gz????????????doc????????????????? " +"tar???????????????????????????????????" +"?????CREATE EXTENSION????????????????" #. Tag: para #, no-c-format @@ -10098,7 +10104,7 @@ msgstr "????????PostgreSQL GiST?????????" #. Tag: term #, no-c-format msgid "Lauren?iu Nicola" -msgstr "" +msgstr "Lauren?iu Nicola" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Wed Nov 26 22:32:17 2025 From: git at osgeo.org (git at osgeo.org) Date: Wed, 26 Nov 2025 22:32:17 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-223-gc86bd9f8d Message-ID: <20251127063217.AF05B16C5D0@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via c86bd9f8d8b2ddaedffabf11c8bddd3488c15722 (commit) from dfcc0797a653104c62747b525afc2d95cd5a6340 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c86bd9f8d8b2ddaedffabf11c8bddd3488c15722 Author: Regina Obe Date: Thu Nov 27 01:30:08 2025 -0500 WOODIE CHANGES - stop testing pg13 and replace with pg14, since pg13 is EOL - Replace pg17 with pg18 - Only test upgrade of pg14 - Get rid of pg15 testing diff --git a/.woodpecker/regress.yml b/.woodpecker/regress.yml index fa79b9ce7..134896315 100644 --- a/.woodpecker/regress.yml +++ b/.woodpecker/regress.yml @@ -59,112 +59,71 @@ steps: commands: - ./autogen.sh - build-pg13: + build-pg14: image: *test-image depends_on: autogen environment: - PGVER: 13 + PGVER: 14 commands: - <<: *steps-env - <<: *steps-pg-build - build-pg15: + build-pg18: image: *test-image depends_on: autogen environment: - PGVER: 15 + PGVER: 18 commands: - <<: *steps-env - <<: *steps-pg-build - build-pg17: + check-pg14: image: *test-image - depends_on: autogen + depends_on: build-pg14 environment: - PGVER: 17 - commands: - - <<: *steps-env - - <<: *steps-pg-build - - check-pg13: - image: *test-image - depends_on: build-pg13 - environment: - PGVER: 13 + PGVER: 14 commands: - <<: *steps-env - <<: *steps-start-postgresql - <<: *steps-pg-test-preinstall - check-pg15: + check-pg18: image: *test-image - depends_on: build-pg15 + depends_on: build-pg18 environment: - PGVER: 15 + PGVER: 18 commands: - <<: *steps-env - <<: *steps-start-postgresql - <<: *steps-pg-test-preinstall - check-pg17: + installcheck-pg14: image: *test-image - depends_on: build-pg17 + depends_on: build-pg14 environment: - PGVER: 17 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-test-preinstall - - installcheck-pg13: - image: *test-image - depends_on: build-pg13 - environment: - PGVER: 13 + PGVER: 14 commands: - <<: *steps-env - <<: *steps-start-postgresql - <<: *steps-pg-install - <<: *steps-pg-test-install - installcheck-pg15: + installcheck-pg18: image: *test-image - depends_on: build-pg15 + depends_on: build-pg18 environment: - PGVER: 15 + PGVER: 18 commands: - <<: *steps-env - <<: *steps-start-postgresql - <<: *steps-pg-install - <<: *steps-pg-test-install - installcheck-pg17: + upgradecheck-pg14: image: *test-image - depends_on: build-pg17 + depends_on: installcheck-pg14 environment: - PGVER: 17 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-install - - <<: *steps-pg-test-install - - upgradecheck-pg13: - image: *test-image - depends_on: installcheck-pg13 - environment: - PGVER: 13 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-install - - <<: *steps-pg-test-all-upgrades - - upgradecheck-pg17: - image: *test-image - depends_on: installcheck-pg17 - environment: - PGVER: 17 + PGVER: 14 commands: - <<: *steps-env - <<: *steps-start-postgresql ----------------------------------------------------------------------- Summary of changes: .woodpecker/regress.yml | 79 ++++++++++++------------------------------------- 1 file changed, 19 insertions(+), 60 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 27 17:47:57 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 27 Nov 2025 17:47:57 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-224-gfeb3413c0 Message-ID: <20251128014758.2C9B016CA54@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via feb3413c042bcb6891ce3a9ce62471071d02f0e0 (commit) from c86bd9f8d8b2ddaedffabf11c8bddd3488c15722 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit feb3413c042bcb6891ce3a9ce62471071d02f0e0 Author: Teramoto Ikuhiro Date: Fri Nov 28 00:08:16 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.5% (5807 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 3af525ef4..87191ae60 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-26 08:47+0000\n" +"PO-Revision-Date: 2025-11-28 01:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -43385,6 +43385,9 @@ msgid "" "output from the linework. The requirement that no vertices are lost can " "generate complex collections as outputs." msgstr "" +"\"linework\"????????????????????????????????" +"??????????????????????????????????????" +"????????????????????????????????" #. Tag: para #, no-c-format @@ -43394,6 +43397,9 @@ msgid "" "differencing all interior rings. The results tend to be more intuitive, " "where collapsed lines are discarded in the output." msgstr "" +"\"structure\"????????????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????" #. Tag: para #, no-c-format @@ -43401,6 +43407,8 @@ msgid "" "The \"keepcollapsed\" key is only valid for the \"structure\" algorithm, and " "takes a value of \"true\" or \"false\"." msgstr "" +"\"keepcollapsed\"???\"structure\"???????????????\"true" +"\"???\"false\"??????" #. Tag: para #, no-c-format @@ -43409,13 +43417,16 @@ msgid "" "components that collapse to a lower dimensionality, for example a one-point " "linestring will be dropped." msgstr "" +"\"keepcollapsed\"????????\"false\"??????1???????????" +"???????????????????????????" #. Tag: para #, no-c-format msgid "" "Keep collapsed of \"true\" means geometry components that collapse to a " "lower dimensionality will be retained." -msgstr "" +msgstr "\"keepcollapsed\"?\"true\"?????" +"????????????????????????????" #. Tag: para #, no-c-format @@ -45438,6 +45449,11 @@ msgid "" "custom geodetic spatial reference system as described in ." msgstr "" +"?????????????????????????????? (Spatial " +"Reference System Identifier, SRID)???????? spatial_ref_sys????????????? (??/??)???????????????" +"????????????????????????????????????" #. Tag: para #, no-c-format @@ -47646,6 +47662,16 @@ msgid "" "href=\"https://www.postgresql.org/docs/current/brin.html\">PostgreSQL " "manual." msgstr "" +"BRIN?\"Block Range Index\"??????PostgreSQL??????????????" +"??BRIN???????????????" +"?????????????????????????????? (???????" +"????????????????????)?BRIN???????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"????????????????BRIN?????????? " +"(???????)????????????????????PostgreSQL " +"manual??????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 27 17:57:03 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 27 Nov 2025 17:57:03 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-225-g8941ee3f9 Message-ID: <20251128015703.B3C0116CA6A@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 8941ee3f906a77b673be5e6d60d69397ef4fd59d (commit) from feb3413c042bcb6891ce3a9ce62471071d02f0e0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8941ee3f906a77b673be5e6d60d69397ef4fd59d Author: Peter Nguyen Date: Wed Nov 5 23:47:46 2025 -0800 Fix example expected output in ST_Boundary docs Closes https://github.com/postgis/postgis/pull/836 for PostGIS 3.7.0 diff --git a/doc/reference_accessor.xml b/doc/reference_accessor.xml index 4cbcd8f74..52b096594 100644 --- a/doc/reference_accessor.xml +++ b/doc/reference_accessor.xml @@ -206,7 +206,7 @@ SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('MULTILINESTRING((1 1 1,0 0 0.5, -1 st_asewkt ---------- -MULTIPOINT((-1 1 1),(1 1 0.75)) +MULTIPOINT((1 1 1),(-1 1 1)) ----------------------------------------------------------------------- Summary of changes: doc/reference_accessor.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 27 19:47:55 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 27 Nov 2025 19:47:55 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-226-ga18de16c6 Message-ID: <20251128034755.573C618C46B@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via a18de16c6c7dba9055ffd4bbd5823aa7a1a5aae7 (commit) from 8941ee3f906a77b673be5e6d60d69397ef4fd59d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a18de16c6c7dba9055ffd4bbd5823aa7a1a5aae7 Author: Teramoto Ikuhiro Date: Fri Nov 28 02:19:40 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.6% (5813 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 87191ae60..b9d62334b 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-28 01:47+0000\n" +"PO-Revision-Date: 2025-11-28 03:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -27672,7 +27672,7 @@ msgstr "???????????? > 2 ????????? #. Tag: title #, no-c-format msgid "Non-Touching Lines" -msgstr "" +msgstr "??????????" #. Tag: para #, no-c-format @@ -27686,7 +27686,7 @@ msgstr "" #. Tag: title #, no-c-format msgid "Directed Parameter" -msgstr "" +msgstr "directed??????" #. Tag: para #, no-c-format @@ -27696,7 +27696,7 @@ msgstr "directed = TRUE??????????????????? #. Tag: title #, no-c-format msgid "Z-dimension Handling" -msgstr "" +msgstr "Z??????" #. Tag: para #, no-c-format @@ -30909,7 +30909,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "Non-georeferenced rasters and geometries use SRID 0." -msgstr "" +msgstr "???????????????????????SRID?0???" #. Tag: refpurpose #, no-c-format @@ -36327,7 +36327,7 @@ msgstr "" #. Tag: para #, no-c-format msgid "Complete example of tiles of a coverage." -msgstr "" +msgstr "???????????????" #. Tag: para #, no-c-format @@ -36905,7 +36905,8 @@ msgstr "" msgid "" "Changed 3.7.0, the polygonization honours PostgreSQL interrupts so " "cancellations and statement timeouts halt processing promptly." -msgstr "" +msgstr "Changed 3.7.0, PostgreSQL??????????????????????????" +"????????????????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Nov 27 22:52:03 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 28 Nov 2025 06:52:03 -0000 Subject: [PostGIS] #6021: woodie failing on codespell In-Reply-To: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> References: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> Message-ID: <061.fcdc3e1de135063b12e964847f1e72cd@osgeo.org> #6021: woodie failing on codespell ---------------------+-------------------------------------- Reporter: robe | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Website Management, Bots Component: build | Version: 3.5.x Resolution: fixed | Keywords: ---------------------+-------------------------------------- Changes (by robe): * resolution: => fixed * status: new => closed Comment: To fix rebuilt without codespell. @strk is going to put in a --without-codespell switch so we can turn off if needed. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Nov 27 23:02:15 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 27 Nov 2025 23:02:15 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-228-geb73a244e Message-ID: <20251128070216.2D9C91A0DCE@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via eb73a244e131c0e362e2b4b3f8257c9ce4da3057 (commit) via d8f5161a7c09b20a28c4bac9a0bc5c4817bbc0e5 (commit) from a18de16c6c7dba9055ffd4bbd5823aa7a1a5aae7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit eb73a244e131c0e362e2b4b3f8257c9ce4da3057 Author: Regina Obe Date: Thu Nov 27 19:22:45 2025 -0500 Add codespell check Show codespell version diff --git a/.codespell.ignore b/.codespell.ignore index 7e1e0cfa0..18f50ff2f 100644 --- a/.codespell.ignore +++ b/.codespell.ignore @@ -12,6 +12,7 @@ hel hist infor inout +koordinates larg mater mis @@ -22,6 +23,7 @@ nempty ot outin outout +pease pixelx raison rin diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 000000000..302aa40a1 --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,29 @@ +name: Codespell Check + +on: + push: + branches-ignore: + - 'main' + pull_request: ~ + +jobs: + linux: + + runs-on: ubuntu-latest + + name: "CI Codespell" + + + steps: + + - name: 'Check Out' + uses: actions/checkout at v4 + + - name: 'Install codespell' + run: | + sudo pip install codespell + + - name: 'Build & Test' + run: | + codespell --version + codespell -I ".codespell.ignore" commit d8f5161a7c09b20a28c4bac9a0bc5c4817bbc0e5 Author: Regina Obe Date: Thu Nov 27 18:52:26 2025 -0500 GHA: Remove pg13 testing, add a line for latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c5d9abf47..58a876f08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,12 +29,10 @@ jobs: #- { tag: pg13-geos39-gdal31-proj71, mode: tests } #- { tag: pg13-geos39-gdal31-proj71, mode: coverage } #- { tag: pg13-geos39-gdal31-proj71, mode: usan_gcc } - - { tag: pg13-clang-geos39-gdal31-proj71, mode: usan_clang } + #- { tag: pg14-clang-geos39-gdal31-proj71, mode: usan_clang } # Run tests with different dependency combinations - # - { tag: latest, mode: tests } + - { tag: latest, mode: tests } - { tag: latest, mode: garden } - - { tag: pg13-geos38-gdal31-proj71, mode: tests } - - { tag: pg12-geos38-gdal30-proj611, mode: tests } runs-on: ubuntu-latest steps: ----------------------------------------------------------------------- Summary of changes: .codespell.ignore | 2 ++ .github/workflows/ci.yml | 6 ++---- .github/workflows/codespell.yml | 29 +++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/codespell.yml hooks/post-receive -- PostGIS From git at osgeo.org Thu Nov 27 23:02:53 2025 From: git at osgeo.org (git at osgeo.org) Date: Thu, 27 Nov 2025 23:02:53 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-229-gc7f7524bd Message-ID: <20251128070253.716581A1E73@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via c7f7524bdd6335fbc5c207c46a6a45992cb60a88 (commit) from eb73a244e131c0e362e2b4b3f8257c9ce4da3057 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c7f7524bdd6335fbc5c207c46a6a45992cb60a88 Author: Sandro Santilli Date: Fri Nov 28 08:01:54 2025 +0100 Add --disable-spellcheck-tests configure switch For those who have a broken codespell References #6021 diff --git a/GNUmakefile.in b/GNUmakefile.in index c1d58738f..1e0c2fb92 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -309,5 +309,5 @@ check-spell: ifneq (@CODESPELL@,) cd $(top_srcdir) && @CODESPELL@ else - @echo "SKIP: codespell not installed, cannot check spell" + @echo "SKIP: spell checking disabled" endif diff --git a/configure.ac b/configure.ac index efd360053..29f66a38c 100644 --- a/configure.ac +++ b/configure.ac @@ -186,9 +186,16 @@ case $host_os in esac AC_SUBST([MINGWBUILD]) -AC_PATH_PROG([CODESPELL], [codespell], []) -if test "x$CODESPELL" = "x"; then - AC_MSG_WARN([codespell is not installed so spelling cannot be checked]) +AC_ARG_ENABLE([spellcheck-tests], + [AS_HELP_STRING([--disable-spellcheck-tests], + [Disable spell checking tests])]) +if test "x$enable_spellcheck_tests" = "xno"; then + AC_MSG_NOTICE([NOTE: spell checking tests disabled]) +else + AC_PATH_PROG([CODESPELL], [codespell], []) + if test "x$CODESPELL" = "x"; then + AC_MSG_WARN([codespell is not installed so spelling cannot be checked]) + fi fi AC_PATH_PROG([PERL], [perl], []) ----------------------------------------------------------------------- Summary of changes: GNUmakefile.in | 2 +- configure.ac | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Nov 27 23:03:03 2025 From: trac at osgeo.org (PostGIS) Date: Fri, 28 Nov 2025 07:03:03 -0000 Subject: [PostGIS] #6021: woodie failing on codespell In-Reply-To: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> References: <046.2b90c9984f58c0dfeccb5413331a10d2@osgeo.org> Message-ID: <061.2cfb2ddd5c033125421907526fe8301b@osgeo.org> #6021: woodie failing on codespell ---------------------+-------------------------------------- Reporter: robe | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Website Management, Bots Component: build | Version: 3.5.x Resolution: fixed | Keywords: ---------------------+-------------------------------------- Comment (by Sandro Santilli ): In [changeset:"c7f7524bdd6335fbc5c207c46a6a45992cb60a88/git" c7f7524/git]: {{{#!CommitTicketReference repository="git" revision="c7f7524bdd6335fbc5c207c46a6a45992cb60a88" Add --disable-spellcheck-tests configure switch For those who have a broken codespell References #6021 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Nov 28 00:47:50 2025 From: git at osgeo.org (git at osgeo.org) Date: Fri, 28 Nov 2025 00:47:50 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-230-g4507d2c95 Message-ID: <20251128084751.112EB1A2E78@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 4507d2c954d8b7d410004a55fa81b8659b67f053 (commit) from c7f7524bdd6335fbc5c207c46a6a45992cb60a88 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4507d2c954d8b7d410004a55fa81b8659b67f053 Author: Teramoto Ikuhiro Date: Fri Nov 28 07:12:14 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.6% (5814 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index b9d62334b..68aba062d 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-28 03:47+0000\n" +"PO-Revision-Date: 2025-11-28 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" "Language-Team: Japanese \n" @@ -26709,6 +26709,11 @@ msgid "" "does not affect POINT or POLYGON geometries. By default end caps are square " "when 'left' or 'right' are specified." msgstr "" +"'side=both|left|right' : ??????'both'???'left'???'right'????" +"??????????????????????????????????????" +"??LINESTRING????????????????POINT???POLYGON??????" +"?????????'left'???'right'????????????????????" +"???????????" #. Tag: para #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 29 11:58:13 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 29 Nov 2025 19:58:13 -0000 Subject: [PostGIS] #3889: Support --without-geos switch In-Reply-To: <046.e96544bcbed88e3271b2795e2004ea6c@osgeo.org> References: <046.e96544bcbed88e3271b2795e2004ea6c@osgeo.org> Message-ID: <061.8824146768c92283cb5e816e702858e7@osgeo.org> #3889: Support --without-geos switch --------------------------+----------------------------- Reporter: robe | Owner: pramsey Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS Fund Me Component: postgis | Version: master Resolution: worksforme | Keywords: --------------------------+----------------------------- Changes (by komzpa): * resolution: => worksforme * status: new => closed Comment: Closing as no follow-up interest from requesting party. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 29 12:05:52 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 12:05:52 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-231-g37fdc584b Message-ID: <20251129200553.56D661AD37D@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 37fdc584ba39ae57203c4317d470e233be0756dc (commit) from 4507d2c954d8b7d410004a55fa81b8659b67f053 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 37fdc584ba39ae57203c4317d470e233be0756dc Author: Regina Obe Date: Sat Nov 29 15:05:42 2025 -0500 Codespell check for gitea repo, that uses debian13 image diff --git a/.woodpecker/codespell.yml b/.woodpecker/codespell.yml new file mode 100644 index 000000000..824f73f92 --- /dev/null +++ b/.woodpecker/codespell.yml @@ -0,0 +1,10 @@ +labels: + platform: linux/amd64 +when: + event: [push, pull_request, tag] +steps: + check: + image: repo.osgeo.org/postgis/build-test:debian13 + pull: true + commands: + - codespell ----------------------------------------------------------------------- Summary of changes: .woodpecker/{tools.yml => codespell.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) copy .woodpecker/{tools.yml => codespell.yml} (51%) hooks/post-receive -- PostGIS From git at osgeo.org Sat Nov 29 12:15:46 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 12:15:46 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-232-g95e8afa87 Message-ID: <20251129201547.506731ACDF2@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 95e8afa878e77ed4e735fff2367f113a81c19aa9 (commit) from 37fdc584ba39ae57203c4317d470e233be0756dc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 95e8afa878e77ed4e735fff2367f113a81c19aa9 Author: Darafei Praliaskouski Date: Sun Nov 30 00:11:38 2025 +0400 Enable new GraphicsMagick and ImageMagick versions Closes #5539 diff --git a/NEWS b/NEWS index 488f86f81..5630edbe1 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,9 @@ xxxx/xx/xx - #4828, geometry_columns handles NOT VALID SRID checks without errors (Darafei Praliaskouski) - #5645, Docs: keep code operators ("=>") intact in translated manuals by enforcing verbatim CSS (Darafei Praliaskouski) + - #5593, Docs: render manual images with GraphicsMagick without temporary files, + enabling parallel builds, keeping ImageMagick fallbacks working, and + documenting the generator workflow for contributors (Darafei Praliaskouski) PostGIS 3.6.0 2025/09/01 diff --git a/doc/README b/doc/README index d08d9afb8..905cbfef1 100644 --- a/doc/README +++ b/doc/README @@ -85,7 +85,9 @@ To generate the html files and the comments: * xmllint - http://xmlsoft.org To generate the images: - * ImageMagick - http://www.imagemagick.org/ + * GraphicsMagick - http://www.graphicsmagick.org/ (preferred) + * ImageMagick - https://imagemagick.org/script/download.php ("convert" or + "magick convert" binaries) To generate the PDFs: * dblatex - http://dblatex.sourceforge.net @@ -105,8 +107,23 @@ To generate the localized PDFs: How to ------ -To generate images used in the documentation, follow these instructions on the -PostGIS wiki: http://trac.osgeo.org/postgis/wiki/DevWikiDocNewFeature +Manual images for the reference documentation live in ``doc/html/images``. +Each ``.wkt`` file stores one drawing, optionally split into named layers by +prefixing a line with ``StyleName;WKT``. The generator associates each layer +with ``styles.conf`` and streams the resulting GraphicsMagick command without +ever writing intermediate files, so building all figures in parallel is safe. + +To regenerate the helper binary and PNG artwork: + +1. ``make -C doc/html/images generator`` +2. ``make -C doc/html/images`` (use ``-j`` for parallel builds) + +Invoke ``doc/html/images/generator`` directly to spot-check new artwork. The +``-v`` flag prints the exact GraphicsMagick or ImageMagick command, ``-s`` +overrides the canvas size, and passing a second filename overrides the default +``.png`` output. Set ``POSTGIS_DOC_CONVERTER`` to the GraphicsMagick/ImageMagick +binary if autodetection cannot find ``gm``, ``magick``, or ``convert`` in +``PATH``. To run garden tests against functions, follow these instructions on the PostGIS dev wiki: http://trac.osgeo.org/postgis/wiki/DevWikiGardenTest diff --git a/doc/html/images/Makefile.in b/doc/html/images/Makefile.in index 233b1fa6d..cb01b2d60 100644 --- a/doc/html/images/Makefile.in +++ b/doc/html/images/Makefile.in @@ -301,12 +301,9 @@ generator: $(OBJS) ../../../liblwgeom/.libs/liblwgeom.a clean: rm -f $(OBJS) rm -f generator - rm -rf generator-temp-* distclean: clean rm -f Makefile images-clean: rm -f $(ALL_IMAGES) - -.NOTPARALLEL: diff --git a/doc/html/images/generator.c b/doc/html/images/generator.c index c6e4bf164..e1a5c7296 100644 --- a/doc/html/images/generator.c +++ b/doc/html/images/generator.c @@ -3,6 +3,7 @@ * PostGIS - Spatial Types for PostgreSQL * http://postgis.net * + * Copyright (C) 2025 Darafei Praliaskouski * Copyright (C) 2022-2023 Sandro Santilli * Copyright (C) 2022 Martin Davis * Copyright (C) 2008 Kevin Neufeld @@ -17,10 +18,11 @@ * fill color, etc). * The styles are specified in the adjacent styles.conf file. * - * In order to generate a png file, ImageMagicK must be installed in the - * user's path as system calls are invoked to "convert". In this manner, - * WKT files are converted into SVG syntax and rasterized as png. (PostGIS's - * internal SVG methods could not be used dues to syntax issues with ImageMagick) + * In order to generate a png file, GraphicsMagick or ImageMagick must be + * installed in the user's path as system calls are invoked to "gm convert", + * "magick convert", or the classic "convert" binary. In this manner, WKT + * files are converted into SVG syntax and rasterized as png using their + * command-line interfaces. * * The goal of this application is to dynamically generate all the spatial * pictures used in PostGIS's documentation pages. @@ -33,7 +35,7 @@ * Usage: * generator [-v] [-s x] [] * - * -v - show generated Imagemagick commands + * -v - show generated GraphicsMagick commands * -s - output dimension, if omitted defaults to 200x200 * * If is omitted the output image PNG file has the @@ -44,459 +46,783 @@ #include #include #include -#include /* for rmdir */ #include -#include /* for WEXITSTATUS */ +#include #include -#include -#include +#include /* for WEXITSTATUS */ +#ifndef _WIN32 +#include +#else +#include +#ifndef X_OK +#define X_OK 0 +#endif +#define access _access +#endif #include "liblwgeom_internal.h" #include "lwgeom_log.h" +#include "stringbuffer.h" #include "styles.h" -#define SHOW_DIGS_DOUBLE 15 -#define MAX_DOUBLE_PRECISION 15 -#define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 2) /* +2 for dot and sign */ +typedef struct generator_options { + bool verbose; + const char *image_size; +} generator_options; -bool optionVerbose = false; +/** + * Emit the command-line synopsis expected by documentation maintainers. + * + * The helper keeps the main routine compact and ensures both -h and --help + * share the exact same prose, which simplifies future updates to the option + * set. + */ +static void +print_usage(FILE *stream, const char *progname) +{ + fprintf(stream, + "Usage: %s [-v] [-s x] []\n" + "\n" + "Options:\n" + " -v Emit the assembled GraphicsMagick/ImageMagick command.\n" + " -s Override the output canvas size (default: 200x200).\n" + " -h, --help Display this help text and exit.\n" + "\n" + "If is omitted the generator derives it from the source\n" + "WKT filename.\n", + progname); +} -// Some global styling variables -const char *imageSize = "200x200"; - -char tempdir_template[] = "generator-XXXXXX"; -char *tmpdir = NULL; - -typedef struct draw_context_t { - LAYERSTYLE *style; - const char *tmpdir; - int drawNum; /* number of draw commands */ -} GEOMETRY_DRAW_CONTEXT; +typedef struct generator_job { + generator_options options; + const char *converter_cli; + LAYERSTYLE *styles; + stringbuffer_t command; +} generator_job; static void -initializeGeometryDrawContext(GEOMETRY_DRAW_CONTEXT *ctx) { - ctx->style = NULL; - ctx->tmpdir = NULL; - ctx->drawNum = 0; +generator_job_init(generator_job *job, const generator_options *options) +{ + job->options = *options; + job->converter_cli = NULL; + job->styles = NULL; + stringbuffer_init(&job->command); } static void -checked_system(const char* cmd) +generator_job_reset(generator_job *job) { - int ret = system(cmd); - if ( WEXITSTATUS(ret) != 0 ) { - fprintf(stderr, "Failure return code (%d) from command: %s", WEXITSTATUS(ret), cmd); + if (job->styles) + { + freeStyles(&job->styles); + job->styles = NULL; + } + + stringbuffer_release(&job->command); +} + +typedef struct draw_context_t { + LAYERSTYLE *style; +} GEOMETRY_DRAW_CONTEXT; + +static GEOMETRY_DRAW_CONTEXT +geometry_draw_context_init(void) +{ + GEOMETRY_DRAW_CONTEXT ctx; + ctx.style = NULL; + return ctx; +} + +/** + * Execute an external command and abort on failure. + * + * Several raster utilities also rely on libc's \c system() to orchestrate + * external programs, so keeping this helper self-contained makes it trivial to + * promote into a shared header if we ever need the same GraphicsMagick + * pipeline while testing rasters. + */ +static void +checked_system(const char *cmd) +{ + int ret = system(cmd); + + if (ret == -1) + { + perror("system"); + fprintf(stderr, "Unable to execute command: %s\n", cmd); + exit(EXIT_FAILURE); + } + + if (!WIFEXITED(ret) || WEXITSTATUS(ret) != 0) + { + fprintf(stderr, "Failure return code (%d) from command: %s\n", WEXITSTATUS(ret), cmd); exit(EXIT_FAILURE); } } -static void -cleanupTempDir(const char *dir) +/* + * Locate executables in PATH using liblwgeom's stringbuffer helpers so the + * probing logic can be promoted to the raster tooling if it ever needs the + * same GraphicsMagick/ImageMagick detection. + */ +static bool +command_exists(const char *cmd) { - struct dirent *p; - DIR *d = opendir(dir); - char *buf; - size_t maxlen; + const char *path_env; + const char *cursor; - if ( NULL == d ) { - perror( dir ); - exit(EXIT_FAILURE); /* or be tolerant ? */ + if (cmd == NULL || *cmd == '\0') + return false; + +#ifdef _WIN32 + if (strchr(cmd, ':') || strchr(cmd, '\\')) + { + return access(cmd, X_OK) == 0; + } +#else + if (strchr(cmd, '/')) + { + return access(cmd, X_OK) == 0; + } +#endif + + path_env = getenv("PATH"); + if (!path_env || !*path_env) + return false; + + cursor = path_env; + while (*cursor) + { + const char *sep; + size_t dir_len; + stringbuffer_t candidate; + + sep = strchr(cursor, +#ifdef _WIN32 + ';' +#else + ':' +#endif + ); + dir_len = sep ? (size_t)(sep - cursor) : strlen(cursor); + + stringbuffer_init(&candidate); + if (dir_len == 0) + { + stringbuffer_append(&candidate, "."); + } + else + { + stringbuffer_append_len(&candidate, cursor, dir_len); + } + + if (stringbuffer_getlength(&candidate) > 0) + { + char last = stringbuffer_lastchar(&candidate); +#ifdef _WIN32 + if (last != '/' && last != '\\') + stringbuffer_append_char(&candidate, '\\'); +#else + if (last != '/') + stringbuffer_append_char(&candidate, '/'); +#endif + } + + stringbuffer_append(&candidate, cmd); + + if (access(stringbuffer_getstring(&candidate), X_OK) == 0) + { + stringbuffer_release(&candidate); + return true; + } + +#ifdef _WIN32 + stringbuffer_append(&candidate, ".exe"); + if (access(stringbuffer_getstring(&candidate), X_OK) == 0) + { + stringbuffer_release(&candidate); + return true; + } +#endif + + stringbuffer_release(&candidate); + + if (!sep) + break; + cursor = sep + 1; } - maxlen = strlen(dir) + 64; - buf = malloc(maxlen); + return false; +} - while ( (p=readdir(d)) ) { - if ( strcmp(p->d_name, ".") == 0 ) continue; - if ( strcmp(p->d_name, ".." ) == 0) continue; - snprintf(buf, maxlen-1, "%s/%s", dir, p->d_name); - remove(buf); +/* + * Prefer GraphicsMagick but gracefully fall back to ImageMagick 7 ("magick") + * or the legacy "convert" binary so older documentation builds keep working. + */ +static const char * +select_converter_cli(void) +{ + const char *override = getenv("POSTGIS_DOC_CONVERTER"); + if (override && *override) + return override; + + if (command_exists("gm")) + return "gm convert"; + + if (command_exists("magick")) + return "magick convert"; + + if (command_exists("convert")) + return "convert"; + + return NULL; +} + +static char * +derive_styles_path(const char *source_path) +{ + const char *styles_basename = "styles.conf"; + const char *slash = strrchr(source_path, '/'); + char *resolved; + + if (!slash) + return lwstrdup(styles_basename); + + { + size_t dir_len = (size_t)(slash - source_path); + size_t basename_len = strlen(styles_basename); + size_t total = dir_len + 1 + basename_len + 1; + + resolved = lwalloc(total); + if (!resolved) + return NULL; + + memcpy(resolved, source_path, dir_len); + resolved[dir_len] = '/'; + memcpy(resolved + dir_len + 1, styles_basename, basename_len + 1); } - closedir(d); - rmdir(dir); + return resolved; +} + +static char * +derive_output_path(const char *source_path, const char *override_path) +{ + size_t len; + char *result; + + if (override_path && *override_path) + return lwstrdup(override_path); + + len = strlen(source_path); + result = lwstrdup(source_path); + if (!result) + return NULL; + + if (len >= 3) + memcpy(result + len - 3, "png", 3); + + return result; } /** - * Writes the coordinates of a POINTARRAY to a FILE* where ordinates are - * separated by a comma and coordinates by a space so that the coordinate - * pairs can be interpreted by ImageMagick's SVG draw command. - * - * @param output a file to write the POINTARRAY to - * @param pa a reference to a POINTARRAY - * @return the numbers of character written to *output + * Append a coordinate pair as "x,y" so the resulting buffer can be reused by + * both the documentation generator and raster command builders that already + * rely on liblwgeom's stringbuffer helpers. */ -static size_t -pointarrayToFile(FILE *output, POINTARRAY *pa) +static void +append_coord_pair(stringbuffer_t *sb, double x, double y) { - char x[OUT_DOUBLE_BUFFER_SIZE]; - char y[OUT_DOUBLE_BUFFER_SIZE]; - unsigned int i, written = 0; + stringbuffer_append_double(sb, x, 10); + stringbuffer_append_char(sb, ','); + stringbuffer_append_double(sb, y, 10); +} - for ( i=0; i < pa->npoints; i++ ) +static void +pointarrayToBuffer(stringbuffer_t *output, POINTARRAY *pa) +{ + unsigned int i; + + for (i = 0; i < pa->npoints; i++) { POINT2D pt; getPoint2d_p(pa, i, &pt); - lwprint_double(pt.x, 10, x); - lwprint_double(pt.y, 10, y); - - if ( i ) written += fprintf(output, " "); - written += fprintf(output, "%s,%s", x, y); + if (i) + stringbuffer_append_char(output, ' '); + append_coord_pair(output, pt.x, pt.y); } - - return written; } /** - * Draws a point in a POINTARRAY to a char* using ImageMagick SVG for styling. + * Draws a point in a POINTARRAY to a char* using GraphicsMagick SVG for styling. * @param output a char reference to write the LWPOINT to * @param lwp a reference to a LWPOINT - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawPointSymbol(char *output, POINTARRAY *pa, unsigned int index, int size, char* color) +static void +drawPointSymbol(stringbuffer_t *output, POINTARRAY *pa, unsigned int index, int size, const char *color) { // short-circuit no-op - if (size <= 0) return 0; - - char x[OUT_DOUBLE_BUFFER_SIZE]; - char y1[OUT_DOUBLE_BUFFER_SIZE]; - char y2[OUT_DOUBLE_BUFFER_SIZE]; - char *ptr = output; + if (size <= 0) + return; POINT2D p; getPoint2d_p(pa, index, &p); - lwprint_double(p.x, 10, x); - lwprint_double(p.y, 10, y1); - lwprint_double(p.y + size, 10, y2); - - ptr += sprintf(ptr, "-fill %s -strokewidth 0 ", color); - ptr += sprintf(ptr, "-draw \"circle %s,%s %s,%s", x, y1, x, y2); - ptr += sprintf(ptr, "'\" "); - - return (ptr - output); + stringbuffer_aprintf(output, "-fill %s -strokewidth 0 ", color); + stringbuffer_append(output, "-draw \"circle "); + append_coord_pair(output, p.x, p.y); + stringbuffer_append_char(output, ' '); + append_coord_pair(output, p.x, p.y + size); + stringbuffer_append(output, "\" "); } /** - * Draws a point in a POINTARRAY to a char* using ImageMagick SVG for styling. + * Draws a point in a POINTARRAY to a char* using GraphicsMagick SVG for styling. * @param output a char reference to write the LWPOINT to * @param lwp a reference to a LWPOINT - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawLineArrow(char *output, POINTARRAY *pa, int size, int strokeWidth, char* color) +static void +drawLineArrow(stringbuffer_t *output, POINTARRAY *pa, int size, int strokeWidth, const char *color) { // short-circuit no-op - if (size <= 0) return 0; - if (pa->npoints <= 1) return 0; - - char s0x[OUT_DOUBLE_BUFFER_SIZE]; - char s0y[OUT_DOUBLE_BUFFER_SIZE]; - char s1x[OUT_DOUBLE_BUFFER_SIZE]; - char s1y[OUT_DOUBLE_BUFFER_SIZE]; - char s2x[OUT_DOUBLE_BUFFER_SIZE]; - char s2y[OUT_DOUBLE_BUFFER_SIZE]; + if (size <= 0) + return; + if (pa->npoints <= 1) + return; POINT2D pn; - getPoint2d_p(pa, pa->npoints-1, &pn); + getPoint2d_p(pa, pa->npoints - 1, &pn); POINT2D pn1; - getPoint2d_p(pa, pa->npoints-2, &pn1); + getPoint2d_p(pa, pa->npoints - 2, &pn1); double dx = pn1.x - pn.x; double dy = pn1.y - pn.y; - double len = sqrt(dx*dx + dy*dy); + double len = sqrt(dx * dx + dy * dy); //-- abort if final line segment has length 0 - if (len <= 0) return 0; - - double offx = -0.5 * size * dy/len; - double offy = 0.5 * size * dx/len; + if (len <= 0) + return; + double offx = -0.5 * size * dy / len; + double offy = 0.5 * size * dx / len; double p1x = pn.x + size * dx / len + offx; double p1y = pn.y + size * dy / len + offy; double p2x = pn.x + size * dx / len - offx; double p2y = pn.y + size * dy / len - offy; - lwprint_double(pn.x, 10, s0x); - lwprint_double(pn.y, 10, s0y); - lwprint_double(p1x, 10, s1x); - lwprint_double(p1y, 10, s1y); - lwprint_double(p2x, 10, s2x); - lwprint_double(p2y, 10, s2y); - - char *ptr = output; - ptr += sprintf(ptr, "-fill %s -strokewidth %d ", color, 2); - ptr += sprintf(ptr, "-draw \"path 'M %s,%s %s,%s %s,%s %s,%s'\" ", s0x, s0y, s1x, s1y, s2x, s2y, s0x, s0y); - - return (ptr - output); + stringbuffer_aprintf(output, "-fill %s -strokewidth %d ", color, 2); + stringbuffer_append(output, "-draw \"path 'M "); + append_coord_pair(output, pn.x, pn.y); + stringbuffer_append_char(output, ' '); + append_coord_pair(output, p1x, p1y); + stringbuffer_append_char(output, ' '); + append_coord_pair(output, p2x, p2y); + stringbuffer_append_char(output, ' '); + append_coord_pair(output, pn.x, pn.y); + stringbuffer_append(output, "'\" "); } /** * Serializes a LWPOINT to a char*. This is a helper function that partially * writes the appropriate draw and fill commands used to generate an SVG image - * using ImageMagick's "convert" command. + * using GraphicsMagick's "gm convert" command. * @param output a char reference to write the LWPOINT to * @param lwp a reference to a LWPOINT - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawPoint(char *output, LWPOINT *lwp, GEOMETRY_DRAW_CONTEXT *ctx) +static void +drawPoint(stringbuffer_t *output, LWPOINT *lwp, GEOMETRY_DRAW_CONTEXT *ctx) { - char x[OUT_DOUBLE_BUFFER_SIZE]; - char y1[OUT_DOUBLE_BUFFER_SIZE]; - char y2[OUT_DOUBLE_BUFFER_SIZE]; - char *ptr = output; LAYERSTYLE *styles = ctx->style; POINTARRAY *pa = lwp->point; POINT2D p; getPoint2d_p(pa, 0, &p); LWDEBUGF(4, "%s", "drawPoint called"); - LWDEBUGF( 4, "point = %s", lwgeom_to_ewkt((LWGEOM*)lwp) ); + LWDEBUGF(4, "point = %s", lwgeom_to_ewkt((LWGEOM *)lwp)); - lwprint_double(p.x, 10, x); - lwprint_double(p.y, 10, y1); - lwprint_double(p.y + styles->pointSize, 10, y2); - - ptr += sprintf(ptr, "-fill %s -strokewidth 0 ", styles->pointColor); - ptr += sprintf(ptr, "-draw \"circle %s,%s %s,%s", x, y1, x, y2); - ptr += sprintf(ptr, "'\" "); - - return (ptr - output); + stringbuffer_aprintf(output, "-fill %s -strokewidth 0 ", styles->pointColor); + stringbuffer_append(output, "-draw \"circle "); + append_coord_pair(output, p.x, p.y); + stringbuffer_append_char(output, ' '); + append_coord_pair(output, p.x, p.y + styles->pointSize); + stringbuffer_append(output, "\" "); } /** * Serializes a LWLINE to a char*. This is a helper function that partially * writes the appropriate draw and stroke commands used to generate an SVG image - * using ImageMagick's "convert" command. + * using GraphicsMagick's "gm convert" command. * @param output a char reference to write the LWLINE to * @param lwl a reference to a LWLINE - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawLineString(char *output, LWLINE *lwl, GEOMETRY_DRAW_CONTEXT *ctx) +static void +drawLineString(stringbuffer_t *output, LWLINE *lwl, GEOMETRY_DRAW_CONTEXT *ctx) { - char *ptr = output; LAYERSTYLE *style = ctx->style; - char *drawFname; - FILE *drawFile; - LWDEBUGF(4, "%s", "drawLineString called"); - LWDEBUGF( 4, "line = %s", lwgeom_to_ewkt((LWGEOM*)lwl) ); + LWDEBUGF(4, "line = %s", lwgeom_to_ewkt((LWGEOM *)lwl)); - ptr += sprintf(ptr, "-fill none -stroke %s -strokewidth %d ", style->lineColor, style->lineWidth); + stringbuffer_aprintf(output, "-fill none -stroke %s -strokewidth %d ", style->lineColor, style->lineWidth); - ptr += sprintf(ptr, "-draw '@"); - drawFname = ptr; /* hack to save allocating a new string just for the filename */ - ptr += sprintf(ptr, "%s/draw%d", ctx->tmpdir, ctx->drawNum++); - drawFile = fopen(drawFname, "w"); - if ( NULL == drawFile ) { - perror( drawFname ); - exit(EXIT_FAILURE); /* or be tolerant ? */ - } - ptr += sprintf(ptr, "' "); /* from now on drawFname is invalid */ + stringbuffer_t path; + stringbuffer_init(&path); + stringbuffer_append(&path, "stroke-linecap round stroke-linejoin round path 'M "); + pointarrayToBuffer(&path, lwl->points); + stringbuffer_append(&path, "'"); - fprintf(drawFile, "stroke-linecap round stroke-linejoin round path 'M "); - pointarrayToFile(drawFile, lwl->points ); - fprintf(drawFile, "'"); + stringbuffer_append(output, "-draw \""); + stringbuffer_append(output, stringbuffer_getstring(&path)); + stringbuffer_append(output, "\" "); - fclose(drawFile); + stringbuffer_release(&path); - ptr += drawPointSymbol(ptr, lwl->points, 0, style->lineStartSize, style->lineColor); - ptr += drawPointSymbol(ptr, lwl->points, lwl->points->npoints-1, style->lineEndSize, style->lineColor); - ptr += drawLineArrow(ptr, lwl->points, style->lineArrowSize, style->lineWidth, style->lineColor); - - return (ptr - output); + drawPointSymbol(output, lwl->points, 0, style->lineStartSize, style->lineColor); + drawPointSymbol(output, lwl->points, lwl->points->npoints - 1, style->lineEndSize, style->lineColor); + drawLineArrow(output, lwl->points, style->lineArrowSize, style->lineWidth, style->lineColor); } /** * Serializes a LWPOLY to a char*. This is a helper function that partially * writes the appropriate draw and fill commands used to generate an SVG image - * using ImageMagick's "convert" command. + * using GraphicsMagick's "gm convert" command. * @param output a char reference to write the LWPOLY to * @param lwp a reference to a LWPOLY - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawPolygon(char *output, LWPOLY *lwp, GEOMETRY_DRAW_CONTEXT *ctx) +static void +drawPolygon(stringbuffer_t *output, LWPOLY *lwp, GEOMETRY_DRAW_CONTEXT *ctx) { - char *ptr = output; unsigned int i; LAYERSTYLE *style = ctx->style; - char *drawFname; - FILE *drawFile; LWDEBUGF(4, "%s", "drawPolygon called"); - LWDEBUGF( 4, "poly = %s", lwgeom_to_ewkt((LWGEOM*)lwp) ); + LWDEBUGF(4, "poly = %s", lwgeom_to_ewkt((LWGEOM *)lwp)); - ptr += sprintf(ptr, "-fill %s -stroke %s -strokewidth %d ", style->polygonFillColor, style->polygonStrokeColor, style->polygonStrokeWidth ); + stringbuffer_aprintf(output, + "-fill %s -stroke %s -strokewidth %d ", + style->polygonFillColor, + style->polygonStrokeColor, + style->polygonStrokeWidth); - ptr += sprintf(ptr, "-draw '@"); - drawFname = ptr; /* hack to save allocating a new string just for the filename */ - ptr += sprintf(ptr, "%s/draw%d", ctx->tmpdir, ctx->drawNum++); - drawFile = fopen(drawFname, "w"); - if ( NULL == drawFile ) { - perror( drawFname ); - exit(EXIT_FAILURE); /* or be tolerant ? */ - } - ptr += sprintf(ptr, "' "); /* from now on drawFname is invalid */ - - fprintf(drawFile, "path '"); - for (i=0; inrings; i++) + stringbuffer_t path; + stringbuffer_init(&path); + stringbuffer_append(&path, "path '"); + for (i = 0; i < lwp->nrings; i++) { - fprintf(drawFile, "M "); - pointarrayToFile(drawFile, lwp->rings[i] ); - fprintf(drawFile, " "); + stringbuffer_append(&path, "M "); + pointarrayToBuffer(&path, lwp->rings[i]); + stringbuffer_append_char(&path, ' '); } - fprintf(drawFile, "'"); + stringbuffer_append(&path, "'"); - fclose(drawFile); + stringbuffer_append(output, "-draw \""); + stringbuffer_append(output, stringbuffer_getstring(&path)); + stringbuffer_append(output, "\" "); - return (ptr - output); + stringbuffer_release(&path); } /** * Serializes a LWGEOM to a char*. This is a helper function that partially * writes the appropriate draw, stroke, and fill commands used to generate an - * SVG image using ImageMagick's "convert" command. + * SVG image using GraphicsMagick's "gm convert" command. * @param output a char reference to write the LWGEOM to * @param lwgeom a reference to a LWGEOM * @param ctx drawing context - * @return the numbers of character written to *output + * + * The drawing commands are appended directly to the supplied buffer. */ -static size_t -drawGeometry(char *output, const LWGEOM *lwgeom, GEOMETRY_DRAW_CONTEXT *ctx) +static void +drawGeometry(stringbuffer_t *output, const LWGEOM *lwgeom, GEOMETRY_DRAW_CONTEXT *ctx) { - char *ptr = output; unsigned int i; int type = lwgeom->type; switch (type) { case POINTTYPE: - ptr += drawPoint(ptr, (LWPOINT*)lwgeom, ctx ); + drawPoint(output, (LWPOINT *)lwgeom, ctx); break; case LINETYPE: - ptr += drawLineString(ptr, (LWLINE*)lwgeom, ctx ); + drawLineString(output, (LWLINE *)lwgeom, ctx); break; case POLYGONTYPE: - ptr += drawPolygon(ptr, (LWPOLY*)lwgeom, ctx ); + drawPolygon(output, (LWPOLY *)lwgeom, ctx); break; case MULTIPOINTTYPE: case MULTILINETYPE: case MULTIPOLYGONTYPE: case COLLECTIONTYPE: - for (i=0; i<((LWCOLLECTION*)lwgeom)->ngeoms; i++) + for (i = 0; i < ((LWCOLLECTION *)lwgeom)->ngeoms; i++) { - ptr += drawGeometry( ptr, lwcollection_getsubgeom ((LWCOLLECTION*)lwgeom, i), ctx ); + drawGeometry(output, lwcollection_getsubgeom((LWCOLLECTION *)lwgeom, i), ctx); } break; } - - return (ptr - output); } /** - * Invokes a system call to ImageMagick's "convert" command that reduces - * the overall filesize - * - * @param filename the current working image. + * Extract an optional "style;WKT" prefix and return both pieces. When the + * prefix is absent the caller falls back to the "Default" block in + * styles.conf while keeping the full line as WKT input. */ static void -optimizeImage(char* filename) +parse_layer_line(const char *line, char **style_name, const char **wkt_literal, bool *uses_default) { - char *str; - str = malloc( (18 + (2*strlen(filename)) + 1) * sizeof(char) ); - sprintf(str, "convert %s -depth 8 %s", filename, filename); - if (optionVerbose) { - puts(str); + const char *separator = strrchr(line, ';'); + + if (separator == NULL) + { + *style_name = lwstrdup("Default"); + if (!*style_name) + { + lwerror("Out of memory while reading style name"); + *wkt_literal = NULL; + *uses_default = true; + return; + } + *wkt_literal = line; + *uses_default = true; + return; } - checked_system(str); - free(str); + + { + size_t style_len = (size_t)(separator - line); + *style_name = lwalloc(style_len + 1); + if (!*style_name) + { + lwerror("Out of memory while reading style name"); + *style_name = NULL; + *wkt_literal = NULL; + *uses_default = true; + return; + } + + memcpy(*style_name, line, style_len); + (*style_name)[style_len] = '\0'; + } + + *wkt_literal = separator + 1; + *uses_default = false; } /** - * Flattens all the temporary processing png files into a single image + * Stream all non-empty layers from @a source into @a job's command buffer. + * The helper mirrors the raster tooling, which prefers to marshal draw + * commands in memory before forking external utilities. */ -static void -flattenLayers(char* filename) -{ - char *str = malloc( (48 + strlen(filename) + strlen(tmpdir) + 2) * sizeof(char) ); - sprintf(str, "convert %s/tmp*.png -background white -flatten %s", tmpdir, filename); - if (optionVerbose) { - puts(str); - } - - LWDEBUGF(4, "%s", str); - checked_system(str); - free(str); -} - - -// TODO: comments static int -getStyleName(char **styleName, const char* line) +append_layers(generator_job *job, FILE *source) { - char *ptr = strrchr(line, ';'); - if (ptr == NULL) + char line[65536]; + int layer_index = 0; + + while (fgets(line, sizeof line, source) != NULL) { - *styleName = strdup("Default"); - return 1; - } - else - { - *styleName = malloc( ptr - line + 1); - strncpy(*styleName, line, ptr - line); - (*styleName)[ptr - line] = '\0'; - LWDEBUGF( 4, "%s", *styleName ); - return 0; + if (isspace((unsigned char)line[0])) + break; + + GEOMETRY_DRAW_CONTEXT ctx = geometry_draw_context_init(); + char *style_name = NULL; + const char *wkt_literal = NULL; + bool uses_default_style = false; + LWGEOM *lwgeom; + + parse_layer_line(line, &style_name, &wkt_literal, &uses_default_style); + + if (!style_name || !wkt_literal) + { + lwfree(style_name); + return -1; + } + + if (uses_default_style) + printf(" Warning: using Default style for layer %d\n", layer_index); + + lwgeom = lwgeom_from_wkt(wkt_literal, LW_PARSER_CHECK_NONE); + if (!lwgeom) + { + lwerror("Could not parse geometry for layer %d", layer_index); + lwfree(style_name); + return -1; + } + + LWDEBUGF(4, "geom = %s", lwgeom_to_ewkt(lwgeom)); + + ctx.style = getStyle(job->styles, style_name); + if (!ctx.style) + { + lwgeom_free(lwgeom); + lwerror("Could not find style named %s", style_name); + lwfree(style_name); + return -1; + } + + drawGeometry(&job->command, lwgeom, &ctx); + + lwgeom_free(lwgeom); + lwfree(style_name); + layer_index++; } + + return layer_index; } -int parseOptions(int argc, const char* argv[] ) +/** + * Parse command-line switches shared with the historical ImageMagick driver. + * The generator continues to accept the same options so existing Makefile + * rules and scripts do not need updates. + */ +static int +parse_options(int argc, const char *argv[], generator_options *opts, bool *show_help) { - if (argc <= 1) return 1; + int arg_pos = 1; - int argPos = 1; - while (argPos < argc && strncmp(argv[argPos], "-", 1) == 0) { - if (strncmp(argv[argPos], "-v", 2) == 0) { - optionVerbose = true; + opts->verbose = false; + opts->image_size = "200x200"; + *show_help = false; + + if (argc <= 1) + return -1; + + while (arg_pos < argc && argv[arg_pos][0] == '-') + { + if (strcmp(argv[arg_pos], "-h") == 0 || strcmp(argv[arg_pos], "--help") == 0) + { + *show_help = true; + return argc; } - if (strncmp(argv[argPos], "-s", 2) == 0) { - if ( ++argPos >= argc ) return 1; - imageSize = argv[argPos]; + + if (strncmp(argv[arg_pos], "-v", 2) == 0) + { + opts->verbose = true; + arg_pos++; + continue; } - argPos++; + + if (strncmp(argv[arg_pos], "-s", 2) == 0) + { + if (++arg_pos >= argc) + return -1; + opts->image_size = argv[arg_pos]; + arg_pos++; + continue; + } + + return -1; } - return argPos; + + return arg_pos; +} + +static int +generator_render(const generator_options *options, const char *source_path, const char *target_override) +{ + generator_job job; + FILE *source = NULL; + char *styles_path = NULL; + char *target_path = NULL; + int rc = -1; + const char *converter_cli; + + generator_job_init(&job, options); + + converter_cli = select_converter_cli(); + if (!converter_cli) + { + lwerror( + "Could not find GraphicsMagick or ImageMagick executables (gm, magick, convert). Set POSTGIS_DOC_CONVERTER to the desired command."); + goto cleanup; + } + job.converter_cli = converter_cli; + + source = fopen(source_path, "r"); + if (!source) + { + perror(source_path); + goto cleanup; + } + + styles_path = derive_styles_path(source_path); + if (!styles_path) + { + lwerror("Out of memory while resolving styles"); + goto cleanup; + } + + printf("reading styles from %s\n", styles_path); + getStyles(styles_path, &job.styles); + + target_path = derive_output_path(source_path, target_override); + if (!target_path) + { + lwerror("Out of memory while preparing output filename"); + goto cleanup; + } + + printf("generating %s\n", target_path); + + stringbuffer_aprintf(&job.command, "%s -size %s xc:none ", job.converter_cli, job.options.image_size); + + if (append_layers(&job, source) < 0) + goto cleanup; + + stringbuffer_append(&job.command, "-flip -depth 8 "); + stringbuffer_append(&job.command, target_path); + + if (job.options.verbose) + puts(stringbuffer_getstring(&job.command)); + + checked_system(stringbuffer_getstring(&job.command)); + + rc = 0; + +cleanup: + if (source) + fclose(source); + if (styles_path) + lwfree(styles_path); + if (target_path) + lwfree(target_path); + generator_job_reset(&job); + return rc; } /** * Main Application. */ -int main( int argc, const char* argv[] ) +int +main(int argc, const char *argv[]) { - FILE *pfile; - LWGEOM *lwgeom; - char line [65536]; - char *filename; - int layerCount; - LAYERSTYLE *styles; - char *stylefile_path; + generator_options options; const char *image_src; - char *ptr; - const char *stylefilename = "styles.conf"; + const char *target_override = NULL; + bool show_help; - int filePos = parseOptions(argc, argv); - if ( filePos >= argc || strlen(argv[filePos]) < 3) + int filePos = parse_options(argc, argv, &options, &show_help); + if (show_help) + { + print_usage(stdout, argv[0]); + return 0; + } + + if (filePos < 0 || filePos >= argc || strlen(argv[filePos]) < 3) { lwerror("Usage: %s [-v] [-s x] []", argv[0]); return -1; @@ -504,106 +830,11 @@ int main( int argc, const char* argv[] ) image_src = argv[filePos]; - if ( (pfile = fopen(image_src, "r")) == NULL) - { - perror ( image_src ); + if (argc - filePos >= 2) + target_override = argv[filePos + 1]; + + if (generator_render(&options, image_src, target_override) != 0) return -1; - } - - /* Get style */ - ptr = rindex( image_src, '/' ); - if ( ptr ) /* source image file has a slash */ - { - size_t dirname_len = (ptr - image_src); - stylefile_path = malloc( strlen(stylefilename) + dirname_len + 2); - /* copy the directory name */ - memcpy(stylefile_path, image_src, dirname_len); - sprintf(stylefile_path + dirname_len, "/%s", stylefilename); - } - else /* source image file has no slash, use CWD */ - { - stylefile_path = strdup(stylefilename); - } - printf("reading styles from %s\n", stylefile_path); - getStyles(stylefile_path, &styles); - free(stylefile_path); - - if ( argc - filePos >= 2 ) - { - filename = strdup(argv[filePos + 1]); - } - else - { - filename = strdup(image_src); - sprintf(filename + strlen(image_src) - 3, "png" ); - } - - tmpdir = mkdtemp(tempdir_template); - if ( NULL == tmpdir ) { - perror ( image_src ); - exit(EXIT_FAILURE); - } - - printf( "generating %s\n", filename ); - - layerCount = 0; - while ( fgets ( line, sizeof line, pfile ) != NULL && !isspace(*line) ) - { - GEOMETRY_DRAW_CONTEXT ctx; - char output[32768]; - char *ptr = output; - char *styleName; - int useDefaultStyle; - - initializeGeometryDrawContext(&ctx); - ctx.tmpdir = tmpdir; - - ptr += sprintf( ptr, "convert -size %s xc:none ", imageSize ); - - useDefaultStyle = getStyleName(&styleName, line); - LWDEBUGF( 4, "%s", styleName ); - - if (useDefaultStyle) - { - printf(" Warning: using Default style for layer %d\n", layerCount); - lwgeom = lwgeom_from_wkt( line, LW_PARSER_CHECK_NONE ); - } - else - lwgeom = lwgeom_from_wkt( line+strlen(styleName)+1, LW_PARSER_CHECK_NONE ); - - LWDEBUGF( 4, "geom = %s", lwgeom_to_ewkt((LWGEOM*)lwgeom) ); - - ctx.style = getStyle(styles, styleName); - if ( ! ctx.style ) { - lwerror("Could not find style named %s", styleName); - free(styleName); - return -1; - } - free(styleName); - - ptr += drawGeometry( ptr, lwgeom, &ctx ); - - ptr += sprintf( ptr, "-flip %s/tmp%d.png", tmpdir, layerCount ); - - lwgeom_free( lwgeom ); - - LWDEBUGF( 4, "%s", output ); - if (optionVerbose) { - puts(output); - } - checked_system(output); - - layerCount++; - } - - flattenLayers(filename); - optimizeImage(filename); - - fclose(pfile); - free(filename); - freeStyles(&styles); - - cleanupTempDir(tmpdir); return 0; } diff --git a/doc/installation.xml b/doc/installation.xml index aef30dc3b..35b05227f 100644 --- a/doc/installation.xml +++ b/doc/installation.xml @@ -296,16 +296,22 @@ sh autogen.sh - - - ImageMagick (convert) is required to generate the - images used in the documentation. ImageMagick is available from - - http://www.imagemagick.org/ - - . - - + + + GraphicsMagick (gm convert) is required to generate the + images used in the documentation. If GraphicsMagick is unavailable, ImageMagick + (convert or magick convert) provides the + same command-line syntax. GraphicsMagick is available from + + http://www.graphicsmagick.org/ + + and ImageMagick from + + https://imagemagick.org/ + + . + +
diff --git a/doc/po/templates/postgis-manual.pot b/doc/po/templates/postgis-manual.pot index 502fcb873..5fd065446 100644 --- a/doc/po/templates/postgis-manual.pot +++ b/doc/po/templates/postgis-manual.pot @@ -6599,9 +6599,9 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick.org/ ." msgstr "" #. Tag: title ----------------------------------------------------------------------- Summary of changes: NEWS | 3 + doc/README | 23 +- doc/html/images/Makefile.in | 3 - doc/html/images/generator.c | 933 ++++++++++++++++++++++-------------- doc/installation.xml | 26 +- doc/po/templates/postgis-manual.pot | 6 +- 6 files changed, 624 insertions(+), 370 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 29 12:15:57 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 29 Nov 2025 20:15:57 -0000 Subject: [PostGIS] #5539: URI of DocBook XSL doesn't work on Trisquel 10.0.1, which is our build-test docker image In-Reply-To: <046.1702131d0fcefbbfc8f76cc1e2f99254@osgeo.org> References: <046.1702131d0fcefbbfc8f76cc1e2f99254@osgeo.org> Message-ID: <061.1d9261f6f38075223d80b50970452618@osgeo.org> #5539: URI of DocBook XSL doesn't work on Trisquel 10.0.1, which is our build-test docker image ----------------------+--------------------------- Reporter: strk | Owner: strk Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.5.0 Component: build | Version: master Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"95e8afa878e77ed4e735fff2367f113a81c19aa9/git" 95e8afa/git]: {{{#!CommitTicketReference repository="git" revision="95e8afa878e77ed4e735fff2367f113a81c19aa9" Enable new GraphicsMagick and ImageMagick versions Closes #5539 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 29 12:18:09 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 12:18:09 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-233-g0673a9acd Message-ID: <20251129201810.7CCA11AE579@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 0673a9acd838953bfa17cb571e064c4486242268 (commit) from 95e8afa878e77ed4e735fff2367f113a81c19aa9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0673a9acd838953bfa17cb571e064c4486242268 Author: Weblate Date: Sat Nov 29 20:16:12 2025 +0000 Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ diff --git a/doc/po/be/postgis-manual.po b/doc/po/be/postgis-manual.po index 16d5f5820..6a6d0acbf 100644 --- a/doc/po/be/postgis-manual.po +++ b/doc/po/be/postgis-manual.po @@ -6744,9 +6744,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/da/postgis-manual.po b/doc/po/da/postgis-manual.po index a0148f11c..40ba3dbf5 100644 --- a/doc/po/da/postgis-manual.po +++ b/doc/po/da/postgis-manual.po @@ -6611,9 +6611,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/de/postgis-manual.po b/doc/po/de/postgis-manual.po index 72e046099..773d2888e 100644 --- a/doc/po/de/postgis-manual.po +++ b/doc/po/de/postgis-manual.po @@ -8628,14 +8628,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert) wird zur Erzeugung von Bildern " -"f?r die Dokumentation ben?tigt. ImageMagick kann von http://www.imagemagick.org/ " -"bezogen werden." #. Tag: title #, fuzzy, no-c-format @@ -52575,6 +52572,18 @@ msgstr "2.5/3D-Unterst?tzung" msgid "Supports geography" msgstr "Unterst?tzt Geographie" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert) wird zur Erzeugung von Bildern " +#~ "f?r die Dokumentation ben?tigt. ImageMagick kann von http://www.imagemagick.org/ " +#~ "bezogen werden." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/es/postgis-manual.po b/doc/po/es/postgis-manual.po index 878adeece..9edbd124b 100644 --- a/doc/po/es/postgis-manual.po +++ b/doc/po/es/postgis-manual.po @@ -7573,14 +7573,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert) es necesario para generar las " -"im?genes empleadas en la documentaci?n. ImageMagick esta disponible en http://www.imagemagick.org/ ." #. Tag: title #, fuzzy, no-c-format @@ -43194,6 +43191,18 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert) es necesario para generar las " +#~ "im?genes empleadas en la documentaci?n. ImageMagick esta disponible " +#~ "en http://www." +#~ "imagemagick.org/ ." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/fr/postgis-manual.po b/doc/po/fr/postgis-manual.po index 38a0ca9db..d285bb0fb 100644 --- a/doc/po/fr/postgis-manual.po +++ b/doc/po/fr/postgis-manual.po @@ -8594,13 +8594,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert) est n?cessaire pour g?n?rer les " -"images de la documentation. ImageMagick is available from http://www.imagemagick.org/ ." #. Tag: title #, no-c-format @@ -52590,6 +52588,18 @@ msgstr "Support 2.5/3D" msgid "Supports geography" msgstr "Prise en charge du type geography" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert) est n?cessaire pour g?n?rer " +#~ "les images de la documentation. ImageMagick is available from http://www.imagemagick.org/ ." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/it_IT/postgis-manual.po b/doc/po/it_IT/postgis-manual.po index c54c83a8c..c3eded8a9 100644 --- a/doc/po/it_IT/postgis-manual.po +++ b/doc/po/it_IT/postgis-manual.po @@ -7293,14 +7293,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." -msgstr "" -"ImageMagick (convert) viene utilizzato per generare le " -"immagini utilizzate nella documentazione. ImageMagick ? disponibile sul sito " -" http://www.imagemagick." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." "org/ ." +msgstr "" #. Tag: title #, no-c-format @@ -43291,6 +43288,18 @@ msgstr "Supporta il 2.5/3D" msgid "Supports geography" msgstr "Supporta il tipo geography" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert) viene utilizzato per generare " +#~ "le immagini utilizzate nella documentazione. ImageMagick ? disponibile " +#~ "sul sito http://www." +#~ "imagemagick.org/ ." + #, no-c-format #~ msgid "" #~ "As of PostGIS 2.1.3, out-of-db rasters and all raster drivers are " diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 68aba062d..92857e0d0 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -12,8 +12,8 @@ msgstr "" "POT-Creation-Date: 2025-11-13 16:23+0000\n" "PO-Revision-Date: 2025-11-28 08:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4058,11 +4058,11 @@ msgid "" "abs_next_right_edge columns exposed by the edge view are convenience projections of these absolute values." msgstr "" -"???????????????????????????? (" -"????????????? " -"0??????????????????????)? " -"edge??????abs_next_left_edge????abs_next_right_edge?????????????????????" +"???????????????????????????? (????????" +"????? 0?????????????????????" +"?)? edge??????abs_next_left_edge????abs_next_right_edge???????????" +"??????????" #. Tag: para #, no-c-format @@ -5605,7 +5605,8 @@ msgstr "" msgid "" "The returned edge identifiers may be either existing edges or newly created " "edges as needed to fully represent the input line as closely as possible." -msgstr "??????????????????????????????????????" +msgstr "" +"??????????????????????????????????????" "?????????????????????????????" #. Tag: para @@ -5615,9 +5616,9 @@ msgid "" "uncovered or resulting from split of existing edges) may be limited by the " "max_edges parameter." msgstr "" -"???????????? " -"(??????????????????????????????????)? " -"max_edges???????????????????" +"???????????? (?????????????????????????" +"?????????)? max_edges?????????????" +"??????" #. Tag: para #, no-c-format @@ -7237,8 +7238,8 @@ msgid "" "the topology precision as tolerance." msgstr "" "tolerance????????????????????????" -"???????????????????? -1 " -"(?????)???????????????????????????" +"???????????????????? -1 (?????)??????????" +"?????????????????" #. Tag: para #, no-c-format @@ -7275,8 +7276,8 @@ msgid "" "Changed: 3.7.0 changes meaning of tolerance 0 to really mean 0 and -1 (new " "default) to request using the topology precision." msgstr "" -"Changed: 3.7.0 ??? 0???? 0??????-1 " -"(???????)??????????????????????????????" +"Changed: 3.7.0 ??? 0???? 0??????-1 (???????)??????" +"????????????????????????" #. Tag: para #, no-c-format @@ -8450,13 +8451,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert)?????????????????" -"???http://www." -"imagemagick.org/??????" #. Tag: title #, no-c-format @@ -8777,10 +8776,10 @@ msgid "" msgstr "" "??????????????????????????????????????" "???????????????????????docbook????????????" -"???postgis_comments.sql??????????????????tar." -"gz????????????doc????????????????? " -"tar???????????????????????????????????" -"?????CREATE EXTENSION????????????????" +"???postgis_comments.sql??????????????????tar.gz????" +"????????doc????????????????? tar??????????" +"??????????????????????????????CREATE EXTENSION" +"????????????????" #. Tag: para #, no-c-format @@ -36910,7 +36909,8 @@ msgstr "" msgid "" "Changed 3.7.0, the polygonization honours PostgreSQL interrupts so " "cancellations and statement timeouts halt processing promptly." -msgstr "Changed 3.7.0, PostgreSQL??????????????????????????" +msgstr "" +"Changed 3.7.0, PostgreSQL??????????????????????????" "????????????????????" #. Tag: para @@ -43413,8 +43413,8 @@ msgid "" "The \"keepcollapsed\" key is only valid for the \"structure\" algorithm, and " "takes a value of \"true\" or \"false\"." msgstr "" -"\"keepcollapsed\"???\"structure\"???????????????\"true" -"\"???\"false\"??????" +"\"keepcollapsed\"???\"structure\"???????????????\"true\"?" +"??\"false\"??????" #. Tag: para #, no-c-format @@ -43431,8 +43431,9 @@ msgstr "" msgid "" "Keep collapsed of \"true\" means geometry components that collapse to a " "lower dimensionality will be retained." -msgstr "\"keepcollapsed\"?\"true\"?????" -"????????????????????????????" +msgstr "" +"\"keepcollapsed\"?\"true\"?????????????????????????" +"????????" #. Tag: para #, no-c-format @@ -47669,15 +47670,14 @@ msgid "" "manual." msgstr "" "BRIN?\"Block Range Index\"??????PostgreSQL??????????????" -"??BRIN???????????????" -"?????????????????????????????? (???????" -"????????????????????)?BRIN???????????????" -"??????????????????????????????????????" -"??????????????????????????????????????" -"????????????????BRIN?????????? " -"(???????)????????????????????PostgreSQL " -"manual??????????" +"??BRIN????????????????????????" +"????????????????????? (????????????????" +"???????????)?BRIN????????????????????????" +"??????????????????????????????????????" +"??????????????????????????????????????" +"???????BRIN?????????? (???????)???????????" +"?????????PostgreSQL manual??????????" #. Tag: para #, no-c-format @@ -50341,6 +50341,17 @@ msgstr "2.5??/3????" msgid "Supports geography" msgstr "????????" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert)????????????????" +#~ "????http://www." +#~ "imagemagick.org/??????" + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/ka/postgis-manual.po b/doc/po/ka/postgis-manual.po index cd4cfa9ba..d55f504b4 100644 --- a/doc/po/ka/postgis-manual.po +++ b/doc/po/ka/postgis-manual.po @@ -6601,9 +6601,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/ko_KR/postgis-manual.po b/doc/po/ko_KR/postgis-manual.po index 61b0aebc4..9c21046cf 100644 --- a/doc/po/ko_KR/postgis-manual.po +++ b/doc/po/ko_KR/postgis-manual.po @@ -7672,13 +7672,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick(convert)? ??? ???? ???? ???" -"? ? ?????. ImageMagick? http://www.imagemagick.org/ ?? ????? ? ????." #. Tag: title #, fuzzy, no-c-format @@ -45433,6 +45431,18 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick(convert)? ??? ???? ???? ??" +#~ "?? ? ?????. ImageMagick? http://www.imagemagick.org/ ?? ????? ? " +#~ "????." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/pl/postgis-manual.po b/doc/po/pl/postgis-manual.po index cffd5de0a..65c98678a 100644 --- a/doc/po/pl/postgis-manual.po +++ b/doc/po/pl/postgis-manual.po @@ -6626,9 +6626,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/pt_BR/postgis-manual.po b/doc/po/pt_BR/postgis-manual.po index b2570e0bd..52c4c30d9 100644 --- a/doc/po/pt_BR/postgis-manual.po +++ b/doc/po/pt_BR/postgis-manual.po @@ -7740,13 +7740,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert) ? necess?rio para gerar as " -"imagens usadas na documenta??o. ImageMagick est? dispon?vel em http://www.imagemagick.org/ ." #. Tag: title #, fuzzy, no-c-format @@ -45822,6 +45820,18 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert) ? necess?rio para gerar as " +#~ "imagens usadas na documenta??o. ImageMagick est? dispon?vel em http://www.imagemagick.org/ ." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/ro/postgis-manual.po b/doc/po/ro/postgis-manual.po index 28dc76561..3fadea308 100644 --- a/doc/po/ro/postgis-manual.po +++ b/doc/po/ro/postgis-manual.po @@ -6620,9 +6620,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/ru/postgis-manual.po b/doc/po/ru/postgis-manual.po index 869a594e0..2823bc8c6 100644 --- a/doc/po/ru/postgis-manual.po +++ b/doc/po/ru/postgis-manual.po @@ -6618,9 +6618,10 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" #. Tag: title diff --git a/doc/po/sv/postgis-manual.po b/doc/po/sv/postgis-manual.po index e053bc343..ec9932982 100644 --- a/doc/po/sv/postgis-manual.po +++ b/doc/po/sv/postgis-manual.po @@ -8442,13 +8442,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick(convert) kr?vs f?r att generera de bilder " -"som anv?nds i dokumentationen. ImageMagick ?r tillg?ngligt fr?n http://www.imagemagick.org/ ." #. Tag: title #, no-c-format @@ -51527,6 +51525,18 @@ msgstr "2.5/3D-st?d" msgid "Supports geography" msgstr "St?djer geografi" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick(convert) kr?vs f?r att generera de " +#~ "bilder som anv?nds i dokumentationen. ImageMagick ?r tillg?ngligt fr?n " +#~ " http://www.imagemagick." +#~ "org/ ." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 59d3fdc84..ee07a2171 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -8450,14 +8450,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"??? ????????? ?????????, ?? ???????????????? ? ????????????, ????????? " -"???????? ImageMagick (convert). ImageMagick ???????? ?? " -"??????? http://www." -"imagemagick.org/ ." #. Tag: title #, no-c-format @@ -49309,6 +49306,18 @@ msgstr "" msgid "Supports geography" msgstr "" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "??? ????????? ?????????, ?? ???????????????? ? ????????????, ????????? " +#~ "???????? ImageMagick (convert). ImageMagick ???????? " +#~ "?? ??????? http://www." +#~ "imagemagick.org/ ." + #, no-c-format #~ msgid "" #~ "GIS Graphy also " diff --git a/doc/po/zh_Hans/postgis-manual.po b/doc/po/zh_Hans/postgis-manual.po index a4e4198e9..bd88e2564 100644 --- a/doc/po/zh_Hans/postgis-manual.po +++ b/doc/po/zh_Hans/postgis-manual.po @@ -7744,13 +7744,11 @@ msgstr "" #. Tag: para #, no-c-format msgid "" -"ImageMagick (convert) is required to generate the " -"images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +"GraphicsMagick (gm convert) is required to generate the " +"images used in the documentation. GraphicsMagick is available from http://www.graphicsmagick." +"org/ ." msgstr "" -"ImageMagick (convert)?????????????? http://www.imagemagick.org/ ?" #. Tag: title #, no-c-format @@ -47391,6 +47389,17 @@ msgstr "2.5/3D ??" msgid "Supports geography" msgstr "????" +#, no-c-format +#~ msgid "" +#~ "ImageMagick (convert) is required to generate the " +#~ "images used in the documentation. ImageMagick is available from http://www.imagemagick.org/ ." +#~ msgstr "" +#~ "ImageMagick (convert)??????????????" +#~ " http://www.imagemagick." +#~ "org/ ?" + #, no-c-format #~ msgid "" #~ "GIS Graphy also " ----------------------------------------------------------------------- Summary of changes: doc/po/be/postgis-manual.po | 7 ++-- doc/po/da/postgis-manual.po | 7 ++-- doc/po/de/postgis-manual.po | 23 +++++++---- doc/po/es/postgis-manual.po | 23 +++++++---- doc/po/fr/postgis-manual.po | 22 +++++++--- doc/po/it_IT/postgis-manual.po | 23 +++++++---- doc/po/ja/postgis-manual.po | 89 ++++++++++++++++++++++------------------ doc/po/ka/postgis-manual.po | 7 ++-- doc/po/ko_KR/postgis-manual.po | 22 +++++++--- doc/po/pl/postgis-manual.po | 7 ++-- doc/po/pt_BR/postgis-manual.po | 22 +++++++--- doc/po/ro/postgis-manual.po | 7 ++-- doc/po/ru/postgis-manual.po | 7 ++-- doc/po/sv/postgis-manual.po | 22 +++++++--- doc/po/uk/postgis-manual.po | 23 +++++++---- doc/po/zh_Hans/postgis-manual.po | 21 +++++++--- 16 files changed, 217 insertions(+), 115 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Nov 29 12:31:38 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 12:31:38 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-234-gd44a6df35 Message-ID: <20251129203138.8302E1AFFDE@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via d44a6df35bf71a6fca4bdb4f997e032ce61591e9 (commit) from 0673a9acd838953bfa17cb571e064c4486242268 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d44a6df35bf71a6fca4bdb4f997e032ce61591e9 Author: Darafei Praliaskouski Date: Sun Nov 30 00:26:34 2025 +0400 Guard in MakeTopologyPrecise to prevent EMPTY edges Closes #5948 diff --git a/NEWS b/NEWS index 5630edbe1..3401fe5f0 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,8 @@ xxxx/xx/xx * Bug Fixes * + - #5948, [topology] Prevent MakeTopologyPrecise from erasing edges when + grid size exceeds their extent (Darafei Praliaskouski) - #5959, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) - #4828, geometry_columns handles NOT VALID SRID checks without errors (Darafei Praliaskouski) - #5645, Docs: keep code operators ("=>") intact in translated manuals diff --git a/doc/extras_topology.xml b/doc/extras_topology.xml index d50276dd4..d30d68a82 100644 --- a/doc/extras_topology.xml +++ b/doc/extras_topology.xml @@ -1121,6 +1121,13 @@ parameter, optionally limiting the operation to the objects intersecting the area specified by the bbox parameter. + +Using a gridSize larger than the smallest edge extent +raises an exception rather than collapsing the edge into an empty +geometry. This safeguards adjacent topological relationships by +preventing precision snapping from removing primitives altogether. + + Snapping could make the topology invalid, so it is recommended to diff --git a/topology/sql/manage/MakeTopologyPrecise.sql.in b/topology/sql/manage/MakeTopologyPrecise.sql.in index e66eea2fb..3906e0cfb 100644 --- a/topology/sql/manage/MakeTopologyPrecise.sql.in +++ b/topology/sql/manage/MakeTopologyPrecise.sql.in @@ -28,6 +28,7 @@ DECLARE dataBox GEOMETRY; dataMagnitude FLOAT8; minGridSize FLOAT8; + minEdgeExtent FLOAT8; BEGIN topo := findTopology(toponame); IF topo.id IS NULL THEN @@ -73,6 +74,29 @@ BEGIN -- TODO: recursively grow working bbox to include all edges connected -- to all endpoints of edges intersecting it ? + -- + -- Guard against snapping a whole edge to a single grid point. + -- With a grid size wider than the smallest edge extent every vertex would + -- quantize to the same coordinate, producing EMPTY geometries and breaking + -- the topology. Raising early keeps the caller in control of a safer grid + -- selection. + -- + sql := format( + $$ +SELECT min(greatest( + abs(ST_XMax(geom) - ST_XMin(geom)), + abs(ST_YMax(geom) - ST_YMin(geom)) + )) +FROM %1$I.edge_data +WHERE ($1 IS NULL OR geom && $1) + $$, topo.name + ); + EXECUTE sql USING bbox INTO minEdgeExtent; + + IF minEdgeExtent IS NOT NULL AND gridSize > minEdgeExtent THEN + RAISE EXCEPTION 'Grid size % exceeds smallest edge extent % and would erase edges', gridSize, minEdgeExtent; + END IF; + sql := format( $$ UPDATE %1$I.edge_data diff --git a/topology/test/regress/maketopologyprecise.sql b/topology/test/regress/maketopologyprecise.sql index 84234cd25..f76b535be 100644 --- a/topology/test/regress/maketopologyprecise.sql +++ b/topology/test/regress/maketopologyprecise.sql @@ -11,6 +11,12 @@ SELECT 'prec5', 'e', edge_id, ST_AsEWKT(geom) FROM topo.edge ORDER BY edge_id; SET client_min_messages TO WARNING; +-- A tiny topology exercises the guard against collapsing edges into EMPTY. +SELECT NULL FROM topology.CreateTopology('tiny'); +SELECT NULL FROM topology.TopoGeo_addLineString('tiny', 'LINESTRING(0 0, 1 0)'); +SELECT topology.MakeTopologyPrecise('tiny', gridSize => 5); +SELECT NULL FROM topology.DropTopology('tiny'); + -- TODO: test bbox limited made-precise topology -- Cleanup diff --git a/topology/test/regress/maketopologyprecise_expected b/topology/test/regress/maketopologyprecise_expected index 2aad628f6..f3e132dad 100644 --- a/topology/test/regress/maketopologyprecise_expected +++ b/topology/test/regress/maketopologyprecise_expected @@ -3,3 +3,4 @@ NOTICE: Every vertex is precise in an empty topology ERROR: Presence of max ordinate value 1002003008 requires a minimum grid size of 3.60721082879999e-6 start|e|1|LINESTRING(123456789 0.1,6 -1002003004) prec5|e|1|LINESTRING(123456790 0,5 -1002003005) +ERROR: Grid size 5 exceeds smallest edge extent 1 and would erase edges ----------------------------------------------------------------------- Summary of changes: NEWS | 2 ++ doc/extras_topology.xml | 7 +++++++ topology/sql/manage/MakeTopologyPrecise.sql.in | 24 ++++++++++++++++++++++ topology/test/regress/maketopologyprecise.sql | 6 ++++++ topology/test/regress/maketopologyprecise_expected | 1 + 5 files changed, 40 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 29 12:31:40 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 29 Nov 2025 20:31:40 -0000 Subject: [PostGIS] #5948: MakeTopologyPrecise can turn edges into EMPTY In-Reply-To: <046.ff13cd901ab704460e3ce4da8b8b63f8@osgeo.org> References: <046.ff13cd901ab704460e3ce4da8b8b63f8@osgeo.org> Message-ID: <061.e0431d64a3d4baa6030ccb48b051f8a6@osgeo.org> #5948: MakeTopologyPrecise can turn edges into EMPTY -----------------------+--------------------------- Reporter: strk | Owner: strk Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.6.2 Component: topology | Version: master Resolution: fixed | Keywords: -----------------------+--------------------------- Changes (by Darafei Praliaskouski ): * resolution: => fixed * status: new => closed Comment: In [changeset:"d44a6df35bf71a6fca4bdb4f997e032ce61591e9/git" d44a6df/git]: {{{#!CommitTicketReference repository="git" revision="d44a6df35bf71a6fca4bdb4f997e032ce61591e9" Guard in MakeTopologyPrecise to prevent EMPTY edges Closes #5948 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Nov 29 12:36:11 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 12:36:11 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-236-g69f409965 Message-ID: <20251129203611.EF4771B0FDA@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 69f409965635b20fe42da38f86947c0a6d8aa888 (commit) via c7bfc2169820f84ee12abc9e7bbfe989c5044295 (commit) from d44a6df35bf71a6fca4bdb4f997e032ce61591e9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 69f409965635b20fe42da38f86947c0a6d8aa888 Author: Regina Obe Date: Sat Nov 29 15:21:53 2025 -0500 debian 13 image switch and add out codespell version diff --git a/.woodpecker/docs.yml b/.woodpecker/docs.yml index aefe46c4d..f01c432ca 100644 --- a/.woodpecker/docs.yml +++ b/.woodpecker/docs.yml @@ -3,7 +3,7 @@ labels: when: event: [push, pull_request, tag] variables: - - &test_image 'repo.osgeo.org/postgis/build-test:universal' + - &test_image 'repo.osgeo.org/postgis/build-test:debian13' - common_doc_paths: &common_doc_paths # related config files - ".woodpecker/docs.yml" diff --git a/.woodpecker/regress.yml b/.woodpecker/regress.yml index 134896315..b68cc13c3 100644 --- a/.woodpecker/regress.yml +++ b/.woodpecker/regress.yml @@ -3,7 +3,7 @@ labels: when: event: [push, pull_request, tag] variables: - test-image: &test-image repo.osgeo.org/postgis/build-test:universal + test-image: &test-image repo.osgeo.org/postgis/build-test:debian13 steps-env: &steps-env - export PATH=/usr/lib/postgresql/$${PGVER}/bin:$${PATH} - export PGPORT=$$(grep ^port /etc/postgresql/$${PGVER}/main/postgresql.conf | awk '{print $$3}') @@ -23,8 +23,10 @@ variables: - cd "$${BUILDDIR}" - $${SRCDIR}/configure --with-library-minor-version + --without-code-spell --enable-lto --without-interrupt-tests + --disable-spellcheck-tests CFLAGS="-O2 -Wall -fno-omit-frame-pointer -Werror" - make -j steps-pg-test-preinstall: &steps-pg-test-preinstall diff --git a/.woodpecker/tools.yml b/.woodpecker/tools.yml index a81dbbfec..90e989e43 100644 --- a/.woodpecker/tools.yml +++ b/.woodpecker/tools.yml @@ -4,7 +4,7 @@ when: event: [push, pull_request, tag] steps: build: - image: repo.osgeo.org/postgis/build-test:universal + image: repo.osgeo.org/postgis/build-test:debian13 pull: true commands: - sh ci/dronie/postgis_tools.sh commit c7bfc2169820f84ee12abc9e7bbfe989c5044295 Author: Regina Obe Date: Sat Nov 29 15:15:38 2025 -0500 Spit out version of codespell diff --git a/.woodpecker/codespell.yml b/.woodpecker/codespell.yml index 824f73f92..a80a24986 100644 --- a/.woodpecker/codespell.yml +++ b/.woodpecker/codespell.yml @@ -7,4 +7,5 @@ steps: image: repo.osgeo.org/postgis/build-test:debian13 pull: true commands: + - codespell --version - codespell ----------------------------------------------------------------------- Summary of changes: .woodpecker/codespell.yml | 1 + .woodpecker/docs.yml | 2 +- .woodpecker/regress.yml | 4 +++- .woodpecker/tools.yml | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Nov 29 15:28:18 2025 From: git at osgeo.org (git at osgeo.org) Date: Sat, 29 Nov 2025 15:28:18 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-237-geebec8c1c Message-ID: <20251129232819.8912F1B1E31@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via eebec8c1cdf57805289c85ce9e155d386a860256 (commit) from 69f409965635b20fe42da38f86947c0a6d8aa888 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit eebec8c1cdf57805289c85ce9e155d386a860256 Author: Darafei Praliaskouski Date: Sun Nov 30 03:27:49 2025 +0400 LLM-friendly gotchas list to make them behave during PostGIS debug References #5638 diff --git a/doc/SKILL.md b/doc/SKILL.md new file mode 100644 index 000000000..5d2504c44 --- /dev/null +++ b/doc/SKILL.md @@ -0,0 +1,67 @@ +--- +name: postgis-skill +description: PostGIS-focused SQL tips, tricks and gotchas. Use when in need of dealing with geospatial data in Postgres. +--- + +## Documentation + + - Make sure every create statement or CTE has descriptive comment `--` in front of it. + - Write enough comments so you can deduce what was a requirement in the future and not walk in circles. + - Every feature needs to have comprehensive up-to-date documentation near it. + +## Style + + - PostGIS functions follow their spelling from the manual (`st_segmentize` -> `ST_Segmentize`). + - SQL is lowercase unless instructed otherwise. + - Values in databases and layers should be absolute as much as possible: store "birthday" or "construction date" instead of "age". + - Do not mix tabs and spaces in code. + - Add empty lines between logical blocks. + - Format the code nicely and consistently. + - Call geometry column `geom`; geography column `geog`. + +## Indexing + + - Create brin for all columns when creating large table that will be used for ad-hoc queries. + - If you have cache table that has a primary key, it makes sense to add values into `including` on same index for faster lookup. + +## Debugging + + - Make sure that error messages towards developer are better than just "500 Internal server error". + - Don't stub stuff out with insane fallbacks (like lat/lon=0) - instead make the rest of the code work around data absence and inform user. + - SQL files should to be idempotent: drop table if exists + create table as; add some comments to make people grasp queries faster. + - Create both "up' and "down/rollback" migration when creating new migrations for ease of iteration. + - Check `select postgis_full_version();` to see if all upgrades happened successfully. + - Don't run one SQL file from other SQL file - this quickly becomes a mess with relative file paths. + +## Raster + + - Do not work with GDAL on the filesystem. Import things into database and deal with data there. + +## SQL gotchas + + - `sum(case when A then 1 else 0 end)` is just `count() filter (where A)` + - `row_number() ... = 1` can likely be redone as `order by + limit 1` (possibly with `distinct on` or `lateral`) + - `exists(select 1 from ...)` is just `exists(select from ...)` + - `tags ->> 'key' = 'value'` is just `tags @> '{"key": "value"}` - works faster for indexes + - you can't just create ordered table and then rely on it to be ordered on scan without `order by` + +## PostGIS gotchas + + - Do not use geometry typmod unless requested (things like `geometry(multilinestring, 4326)`) - use plain `geometry` or `geography` instead. This removes clutter of `ST_Multi` and errors via `ST_SetSRID`. + - `ST_UnaryUnion(ST_Collect(geom))` is just `ST_Union(geom)` + - `ST_Buffer(geom, 0)` should be `ST_MakeValid(geom)` + - `select min(ST_Distance(..))` should be `select ST_Distance() ... order by a <-> b limit 1` to enable knn gist + - `order by ST_Distance(c.geog, t.geog)` should be `order by c.geog <-> t.geog` + - `ST_UnaryUnion` is a sign you're doing something wrong + - `ST_MakeValid` is a sign you're doing something wrong on the previous step + - be extra attintive when calling `ST_SetSRID`: check the actual projection of input data, check if it can be set correctly during input (`ST_GeomFromGeoJSON`, `EWKT`-style `SRID=4326;POINT(...`, `EWKB` allow that). Check if `ST_Transform` is needed instead. + - when looking for relation between point and polygon, prefer `ST_Intersects` to other topology predicates + - when generating complex geometry by walking raster or grid, may make sense to `ST_Simplify(geom, 0)` + - to generate neighbourhoods of predictable size, use `ST_ClusterKMeans` with k=2 and `max_radius` set to your distance. + - use `ST_AsEWKB` for binary representation instead of `ST_AsWKB` to keep SRID. + - Choosing projection: + SRID=4326 (2D longlat) when input or output is longitude and latitude and coordinate value is to be shown to user. + SRID=3857 (2D Spherical Mercator) when output will be shown on web map, ST_AsMVT, or 2D KNN requests of short distance are to be executed. + SRID=4978 (3D XYZ) when performing internal computations, line-of-sight, clustering and averaging across antimeridian. Beware: only use 3D-aware operations, ST_Force3DZ on 2D CRS data before calling ST_Transform to it. + - Instead of using `ST_Hexagon` / `ST_HexagonGrid` use `h3` extension. + - When you know the data is going to be dumped in binary form, gzipped and moved around, consider using `ST_QuantizeCoordinates` if precision is known. ----------------------------------------------------------------------- Summary of changes: doc/SKILL.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 doc/SKILL.md hooks/post-receive -- PostGIS From trac at osgeo.org Sat Nov 29 15:28:34 2025 From: trac at osgeo.org (PostGIS) Date: Sat, 29 Nov 2025 23:28:34 -0000 Subject: [PostGIS] #5638: Need some more developer documentation In-Reply-To: <046.6065d6cbf765554938200b84f3bea454@osgeo.org> References: <046.6065d6cbf765554938200b84f3bea454@osgeo.org> Message-ID: <061.d8f2540f3c321631776b3bdab61c2dc5@osgeo.org> #5638: Need some more developer documentation ----------------------------+--------------------------- Reporter: robe | Owner: robe Type: task | Status: new Priority: critical | Milestone: PostGIS 3.7.0 Component: documentation | Version: 3.4.x Resolution: | Keywords: ----------------------------+--------------------------- Comment (by Darafei Praliaskouski ): In [changeset:"eebec8c1cdf57805289c85ce9e155d386a860256/git" eebec8c1/git]: {{{#!CommitTicketReference repository="git" revision="eebec8c1cdf57805289c85ce9e155d386a860256" LLM-friendly gotchas list to make them behave during PostGIS debug References #5638 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sun Nov 30 12:07:02 2025 From: git at osgeo.org (git at osgeo.org) Date: Sun, 30 Nov 2025 12:07:02 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-238-gef19e8fb4 Message-ID: <20251130200702.73F9E1B567E@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via ef19e8fb446e05d42f54adc59d51ebdf2e88c5e0 (commit) from eebec8c1cdf57805289c85ce9e155d386a860256 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ef19e8fb446e05d42f54adc59d51ebdf2e88c5e0 Author: Darafei Praliaskouski Date: Mon Dec 1 00:06:43 2025 +0400 [raster] Support GDT_Float16 pixel type Closes #5941 diff --git a/NEWS b/NEWS index 3401fe5f0..3d974e88c 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ xxxx/xx/xx (Sandro Santilli) - #6001, support MultiLineString in ST_MakeLine (Paul Ramsey) - #2858, ST_MMin and ST_MMax (Paul Ramsey) + - #5941, [raster] Support GDT_Float16 pixel type (Darafei Praliaskouski) - #5992, Optimize GiST index for repeated edge subdivision in topology (Darafei Praliaskouski) - #5702, Allow the compiler to detect the parallelism -flto=auto (Darafei Praliaskouski) - #4798, ST_AsGeoJSON warns about duplicate property keys (Darafei Praliaskouski) diff --git a/raster/doc/RFC1-SerializedFormat b/raster/doc/RFC1-SerializedFormat index 8b143b5eb..519d2ac9b 100644 --- a/raster/doc/RFC1-SerializedFormat +++ b/raster/doc/RFC1-SerializedFormat @@ -114,7 +114,7 @@ will be of 7 bytes. as part of the datum or is to be found on the server's filesystem. - There are currently 11 supported pixel value types, so 4 + There are currently 12 supported pixel value types, so 4 bits are enough to account for all. We'll reserve the upper 4 bits for generic flags and define upmost as storage flag: @@ -135,7 +135,7 @@ will be of 7 bytes. - PT_1BB, PT_2BUI, PT_4BUI, PT_8BSI, PT_8BUI: No alignment required, each value is 1 byte. - - PT_16BSI, PT_16BUI: + - PT_16BSI, PT_16BUI, PT_16BF: Data must be aligned to 2-bytes boundary. - PT_32BSI, PT_32BUI, PT_32BF: diff --git a/raster/rt_core/librtcore.h b/raster/rt_core/librtcore.h index ded95f1c9..6847319cf 100644 --- a/raster/rt_core/librtcore.h +++ b/raster/rt_core/librtcore.h @@ -184,19 +184,21 @@ typedef enum { } rt_errorstate; /* Pixel types */ -typedef enum { - PT_1BB=0, /* 1-bit boolean */ - PT_2BUI=1, /* 2-bit unsigned integer */ - PT_4BUI=2, /* 4-bit unsigned integer */ - PT_8BSI=3, /* 8-bit signed integer */ - PT_8BUI=4, /* 8-bit unsigned integer */ - PT_16BSI=5, /* 16-bit signed integer */ - PT_16BUI=6, /* 16-bit unsigned integer */ - PT_32BSI=7, /* 32-bit signed integer */ - PT_32BUI=8, /* 32-bit unsigned integer */ - PT_32BF=10, /* 32-bit float */ - PT_64BF=11, /* 64-bit float */ - PT_END=13 +typedef enum +{ + PT_1BB = 0, /* 1-bit boolean */ + PT_2BUI = 1, /* 2-bit unsigned integer */ + PT_4BUI = 2, /* 4-bit unsigned integer */ + PT_8BSI = 3, /* 8-bit signed integer */ + PT_8BUI = 4, /* 8-bit unsigned integer */ + PT_16BSI = 5, /* 16-bit signed integer */ + PT_16BUI = 6, /* 16-bit unsigned integer */ + PT_32BSI = 7, /* 32-bit signed integer */ + PT_32BUI = 8, /* 32-bit unsigned integer */ + PT_16BF = 9, /* 16-bit float */ + PT_32BF = 10, /* 32-bit float */ + PT_64BF = 11, /* 64-bit float */ + PT_END = 13 } rt_pixtype; typedef enum { @@ -2249,6 +2251,7 @@ extern void rtdealloc(void *mem); #define POSTGIS_RT_1BBMAX 1 #define POSTGIS_RT_2BUIMAX 3 #define POSTGIS_RT_4BUIMAX 15 +#define POSTGIS_RT_16F_MAX 65504.0F uint8_t rt_util_clamp_to_1BB(double value); @@ -2280,6 +2283,12 @@ rt_util_clamp_to_32BUI(double value); float rt_util_clamp_to_32F(double value); +float rt_util_clamp_to_16F(double value); + +uint16_t rt_util_float_to_float16(float value); + +float rt_util_float16_to_float(uint16_t value); + int rt_util_dbl_trunc_warning( double initialvalue, diff --git a/raster/rt_core/rt_band.c b/raster/rt_core/rt_band.c index 4578609a2..2cbe92ead 100644 --- a/raster/rt_core/rt_band.c +++ b/raster/rt_core/rt_band.c @@ -11,6 +11,7 @@ * Copyright (C) 2009-2011 Pierre Racine * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -189,8 +190,7 @@ rt_band_init_value( checkvalint = ptr[0]; break; } - case PT_16BUI: - { + case PT_16BUI: { uint16_t *ptr = mem; uint16_t clamped_initval = rt_util_clamp_to_16BUI(initval); for (uint32_t i = 0; i < numval; i++) @@ -198,8 +198,16 @@ rt_band_init_value( checkvalint = ptr[0]; break; } - case PT_32BSI: - { + case PT_16BF: { + uint16_t *ptr = mem; + float clamped_initval = rt_util_clamp_to_16F(initval); + uint16_t packed = rt_util_float_to_float16(clamped_initval); + for (uint32_t i = 0; i < numval; i++) + ptr[i] = packed; + checkvalfloat = rt_util_float16_to_float(ptr[0]); + break; + } + case PT_32BSI: { int32_t *ptr = mem; int32_t clamped_initval = rt_util_clamp_to_32BSI(initval); for (uint32_t i = 0; i < numval; i++) @@ -944,6 +952,13 @@ rt_band_set_nodata(rt_band band, double val, int *converted) { checkvaluint = band->nodataval; break; } + case PT_16BF: { + float half = rt_util_clamp_to_16F(val); + /* Persist the exact half-float encoding so nodata comparisons stay bitwise-stable. */ + band->nodataval = rt_util_float16_to_float(rt_util_float_to_float16(half)); + checkvalfloat = (float)band->nodataval; + break; + } case PT_32BF: { band->nodataval = rt_util_clamp_to_32F(val); checkvalfloat = band->nodataval; @@ -1178,12 +1193,13 @@ rt_band_set_pixel( data = rt_band_get_data(band); offset = x + (y * band->width); - switch (pixtype) { - case PT_1BB: { - data[offset] = rt_util_clamp_to_1BB(val); - checkvalint = data[offset]; - break; - } + switch (pixtype) + { + case PT_1BB: { + data[offset] = rt_util_clamp_to_1BB(val); + checkvalint = data[offset]; + break; + } case PT_2BUI: { data[offset] = rt_util_clamp_to_2BUI(val); checkvalint = data[offset]; @@ -1223,13 +1239,21 @@ rt_band_set_pixel( break; } case PT_32BUI: { - uint32_t *ptr = (uint32_t*) data; /* we assume correct alignment */ + uint32_t *ptr = (uint32_t *)data; /* we assume correct alignment */ ptr[offset] = rt_util_clamp_to_32BUI(val); checkvaluint = ptr[offset]; break; } + case PT_16BF: { + uint16_t *ptr = (uint16_t *)data; /* we assume correct alignment */ + float clamped = rt_util_clamp_to_16F(val); + /* Pack via explicit converter to mirror GDAL's Float16 representation. */ + ptr[offset] = rt_util_float_to_float16(clamped); + checkvalfloat = rt_util_float16_to_float(ptr[offset]); + break; + } case PT_32BF: { - float *ptr = (float*) data; /* we assume correct alignment */ + float *ptr = (float *)data; /* we assume correct alignment */ ptr[offset] = rt_util_clamp_to_32F(val); checkvalfloat = ptr[offset]; break; @@ -1244,7 +1268,7 @@ rt_band_set_pixel( rterror("rt_band_set_pixel: Unknown pixeltype %d", pixtype); return ES_ERROR; } - } + } /* If the stored value is not NODATA, reset the isnodata flag */ if (!rt_band_clamped_value_is_nodata(band, val)) { @@ -1631,12 +1655,17 @@ rt_band_get_pixel( break; } case PT_32BUI: { - uint32_t *ptr = (uint32_t*) data; /* we assume correct alignment */ + uint32_t *ptr = (uint32_t *)data; /* we assume correct alignment */ *value = ptr[offset]; break; } + case PT_16BF: { + uint16_t *ptr = (uint16_t *)data; /* we assume correct alignment */ + *value = rt_util_float16_to_float(ptr[offset]); + break; + } case PT_32BF: { - float *ptr = (float*) data; /* we assume correct alignment */ + float *ptr = (float *)data; /* we assume correct alignment */ *value = ptr[offset]; break; } @@ -2213,6 +2242,12 @@ rt_band_corrected_clamped_value( else (*newval)--; break; + case PT_16BF: + if (FLT_EQ(rt_util_clamp_to_16F(val), rt_util_clamp_to_16F(minval))) + *newval += FLT_EPSILON; + else + *newval -= FLT_EPSILON; + break; case PT_32BF: if (FLT_EQ(rt_util_clamp_to_32F(val), rt_util_clamp_to_32F(minval))) *newval += FLT_EPSILON; diff --git a/raster/rt_core/rt_pixel.c b/raster/rt_core/rt_pixel.c index d35298fea..15793e82e 100644 --- a/raster/rt_core/rt_pixel.c +++ b/raster/rt_core/rt_pixel.c @@ -11,6 +11,7 @@ * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli * Copyright (C) 2013 Nathaniel Hunter Clay + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -49,6 +50,7 @@ rt_pixtype_size(rt_pixtype pixtype) { break; case PT_16BSI: case PT_16BUI: + case PT_16BF: pixbytes = 2; break; case PT_32BSI: @@ -94,6 +96,8 @@ rt_pixtype_index_from_name(const char* pixname) { return PT_16BSI; else if (strcmp(pixname, "16BUI") == 0) return PT_16BUI; + else if (strcmp(pixname, "16BF") == 0) + return PT_16BF; else if (strcmp(pixname, "32BSI") == 0) return PT_32BSI; else if (strcmp(pixname, "32BUI") == 0) @@ -125,6 +129,8 @@ rt_pixtype_name(rt_pixtype pixtype) { return "16BSI"; case PT_16BUI: return "16BUI"; + case PT_16BF: + return "16BF"; case PT_32BSI: return "32BSI"; case PT_32BUI: @@ -170,8 +176,11 @@ rt_pixtype_get_min_value(rt_pixtype pixtype) { case PT_16BUI: { return 0; } + case PT_16BF: { + return (double)-POSTGIS_RT_16F_MAX; + } case PT_32BSI: { - return (double) rt_util_clamp_to_32BSI((double) INT_MIN); + return (double)rt_util_clamp_to_32BSI((double)INT_MIN); } case PT_32BUI: { return 0; @@ -236,6 +245,10 @@ rt_errorstate rt_pixtype_compare_clamped_values( if (rt_util_clamp_to_16BUI(val) == rt_util_clamp_to_16BUI(refval)) *isequal = 1; break; + case PT_16BF: + if (FLT_EQ(rt_util_clamp_to_16F(val), rt_util_clamp_to_16F(refval))) + *isequal = 1; + break; case PT_32BSI: if (rt_util_clamp_to_32BSI(val) == rt_util_clamp_to_32BSI(refval)) *isequal = 1; diff --git a/raster/rt_core/rt_serialize.c b/raster/rt_core/rt_serialize.c index 4673b3e0c..dbb7cd527 100644 --- a/raster/rt_core/rt_serialize.c +++ b/raster/rt_core/rt_serialize.c @@ -10,6 +10,7 @@ * Copyright (C) 2009-2011 Pierre Racine * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -653,6 +654,12 @@ rt_raster_serialize(rt_raster raster) { ptr += 4; break; } + case PT_16BF: { + uint16_t v = rt_util_float_to_float16((float)band->nodataval); + memcpy(ptr, &v, 2); + ptr += 2; + break; + } case PT_32BF: { float v = band->nodataval; memcpy(ptr, &v, 4); @@ -849,6 +856,10 @@ rt_raster_deserialize(void* serialized, int header_only) { band->nodataval = read_uint32(&ptr, littleEndian); break; } + case PT_16BF: { + band->nodataval = rt_util_float16_to_float(read_uint16(&ptr, littleEndian)); + break; + } case PT_32BF: { band->nodataval = read_float32(&ptr, littleEndian); break; diff --git a/raster/rt_core/rt_statistics.c b/raster/rt_core/rt_statistics.c index b5a6c7025..8be627161 100644 --- a/raster/rt_core/rt_statistics.c +++ b/raster/rt_core/rt_statistics.c @@ -10,6 +10,7 @@ * Copyright (C) 2009-2011 Pierre Racine * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -1683,11 +1684,14 @@ rt_band_get_value_count( roundto = 0; break; /* floating points, check the rounding */ + case PT_16BF: case PT_32BF: case PT_64BF: - for (scale = 0; scale <= 20; scale++) { + for (scale = 0; scale <= 20; scale++) + { tmpd = roundto * pow(10, scale); - if (FLT_EQ((tmpd - ((int) tmpd)), 0.0)) break; + if (FLT_EQ((tmpd - ((int)tmpd)), 0.0)) + break; } break; case PT_END: diff --git a/raster/rt_core/rt_util.c b/raster/rt_core/rt_util.c index e3e1f5415..95f4eb8f3 100644 --- a/raster/rt_core/rt_util.c +++ b/raster/rt_core/rt_util.c @@ -10,6 +10,7 @@ * Copyright (C) 2009-2011 Pierre Racine * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -83,6 +84,94 @@ rt_util_clamp_to_32F(double value) { return (float)fmin(fmax((value), -FLT_MAX), FLT_MAX); } +float +rt_util_clamp_to_16F(double value) +{ + /* + * GDAL exposes Float16 samples as raw 16-bit words, so we clamp to the + * representable range before packing them manually rather than + * depending on a runtime helper. + */ + if (isnan(value)) + return (float)value; + return (float)fmin(fmax((value), -POSTGIS_RT_16F_MAX), POSTGIS_RT_16F_MAX); +} + +uint16_t +rt_util_float_to_float16(float value) +{ + /* + * Manual half-float conversion keeps raster I/O independent of GDAL's + * optional Float16 helpers while preserving IEEE semantics. + */ + union { + float f; + uint32_t u; + } v; + + v.f = value; + + uint32_t sign = (v.u >> 16) & 0x8000U; + uint32_t mantissa = v.u & 0x7fffffU; + int32_t exponent = ((int32_t)((v.u >> 23) & 0xffU)) - 127 + 15; + + if (exponent <= 0) + { + if (exponent < -10) + return (uint16_t)sign; + + mantissa = (mantissa | 0x800000U) >> (uint32_t)(1 - exponent); + return (uint16_t)(sign | ((mantissa + 0x1000U) >> 13)); + } + + if (exponent >= 31) + return (uint16_t)(sign | 0x7c00U | (mantissa ? 0x200U : 0)); + + return (uint16_t)(sign | ((uint32_t)exponent << 10) | ((mantissa + 0x1000U) >> 13)); +} + +float +rt_util_float16_to_float(uint16_t value) +{ + union { + uint32_t u; + float f; + } v; + + uint32_t sign = (uint32_t)(value & 0x8000U) << 16; + uint32_t exponent = (value >> 10) & 0x1fU; + uint32_t mantissa = value & 0x3ffU; + + if (exponent == 0) + { + if (mantissa == 0) + { + v.u = sign; + } + else + { + exponent = 1; + while ((mantissa & 0x400U) == 0) + { + mantissa <<= 1; + exponent--; + } + mantissa &= 0x3ffU; + v.u = sign | ((exponent + 127 - 15) << 23) | (mantissa << 13); + } + } + else if (exponent == 31) + { + v.u = sign | 0x7f800000U | (mantissa << 13); + } + else + { + v.u = sign | ((exponent + 127 - 15) << 23) | (mantissa << 13); + } + + return v.f; +} + /** * Convert cstring name to GDAL Resample Algorithm * @@ -140,6 +229,10 @@ rt_util_pixtype_to_gdal_datatype(rt_pixtype pt) { return GDT_Int32; case PT_32BUI: return GDT_UInt32; +#if POSTGIS_GDAL_VERSION >= 31100 && defined(GDT_Float16) + case PT_16BF: + return GDT_Float16; +#endif case PT_32BF: return GDT_Float32; case PT_64BF: @@ -179,11 +272,15 @@ rt_util_gdal_datatype_to_pixtype(GDALDataType gdt) { return PT_32BF; case GDT_Float64: return PT_64BF; +#if POSTGIS_GDAL_VERSION >= 31100 && defined(GDT_Float16) + case GDT_Float16: + return PT_16BF; +#endif default: return PT_END; - } + } - return PT_END; + return PT_END; } /* @@ -717,12 +814,13 @@ rt_util_dbl_trunc_warning( break; } case PT_32BUI: { - if (fabs(checkvaluint - initialvalue) >= 1) { + if (fabs(checkvaluint - initialvalue) >= 1) + { #if POSTGIS_RASTER_WARN_ON_TRUNCATION > 0 rtwarn("Value set for %s band got clamped from %f to %u", - rt_pixtype_name(pixtype), - initialvalue, checkvaluint - ); + rt_pixtype_name(pixtype), + initialvalue, + checkvaluint); #endif result = 1; } @@ -738,6 +836,7 @@ rt_util_dbl_trunc_warning( } break; } + case PT_16BF: case PT_32BF: { /* For float, because the initial value is a double, diff --git a/raster/rt_core/rt_wkb.c b/raster/rt_core/rt_wkb.c index 88daa9665..86efe1e74 100644 --- a/raster/rt_core/rt_wkb.c +++ b/raster/rt_core/rt_wkb.c @@ -10,6 +10,7 @@ * Copyright (C) 2009-2011 Pierre Racine * Copyright (C) 2009-2011 Mateusz Loskot * Copyright (C) 2008-2009 Sandro Santilli + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -129,6 +130,10 @@ rt_band_from_wkb( band->nodataval = read_uint32(ptr, littleEndian); break; } + case PT_16BF: { + band->nodataval = rt_util_float16_to_float(read_uint16(ptr, littleEndian)); + break; + } case PT_32BF: { band->nodataval = read_float32(ptr, littleEndian); break; @@ -619,6 +624,12 @@ rt_raster_to_wkb(rt_raster raster, int outasin, uint32_t *wkbsize) { ptr += 4; break; } + case PT_16BF: { + uint16_t v = rt_util_float_to_float16((float)band->nodataval); + memcpy(ptr, &v, 2); + ptr += 2; + break; + } case PT_32BF: { float v = band->nodataval; memcpy(ptr, &v, 4); diff --git a/raster/scripts/python/pixval.py b/raster/scripts/python/pixval.py index 644e1aec6..44c953cd0 100755 --- a/raster/scripts/python/pixval.py +++ b/raster/scripts/python/pixval.py @@ -39,6 +39,8 @@ def pt2fmt(pt): gdalc.GDT_Float32: 'f', gdalc.GDT_Float64: 'f' } + if hasattr(gdalc, 'GDT_Float16'): + fmttypes[gdalc.GDT_Float16] = 'e' return fmttypes.get(pt, 'x') if len(sys.argv) < 5 or len(sys.argv) > 6: diff --git a/raster/scripts/python/raster2pgsql.py b/raster/scripts/python/raster2pgsql.py index c6401f925..7d227b413 100755 --- a/raster/scripts/python/raster2pgsql.py +++ b/raster/scripts/python/raster2pgsql.py @@ -222,6 +222,9 @@ def gdt2pt(gdt): gdalc.GDT_Float32 : { 'name': 'PT_32BF', 'id': 10 }, gdalc.GDT_Float64 : { 'name': 'PT_64BF', 'id': 11 } } + + if hasattr(gdalc, 'GDT_Float16'): + pixtypes[gdalc.GDT_Float16] = { 'name': 'PT_16BF', 'id': 9 } # XXX: Uncomment these logs to debug types translation #logit('MSG: Input GDAL pixel type: %s (%d)\n' % (gdal.GetDataTypeName(gdt), gdt)) @@ -240,6 +243,8 @@ def pt2numpy(pt): gdalc.GDT_Float32: numpy.float32, gdalc.GDT_Float64: numpy.float64 } + if hasattr(gdalc, 'GDT_Float16'): + ptnumpy[gdalc.GDT_Float16] = numpy.float16 return ptnumpy.get(pt, numpy.uint8) def pt2fmt(pt): @@ -250,6 +255,7 @@ def pt2fmt(pt): 6: 'H', # PT_16BUI 7: 'i', # PT_32BSI 8: 'I', # PT_32BUI + 9: 'e', # PT_16BF 10: 'f', # PT_32BF 11: 'd' # PT_64BF } @@ -264,6 +270,7 @@ def fmt2printfmt(fmt): 'H': '%d', # PT_16BUI 'i': '%d', # PT_32BSI 'I': '%d', # PT_32BUI + 'e': '%.8f', # PT_16BF 'f': '%.15f', # PT_32BF 'd': '%.15f', # PT_64BF 's': '%s' diff --git a/raster/scripts/python/rtrowdump.py b/raster/scripts/python/rtrowdump.py index 8712db00d..d7a239182 100755 --- a/raster/scripts/python/rtrowdump.py +++ b/raster/scripts/python/rtrowdump.py @@ -47,6 +47,8 @@ def pt2gdt(pt): '32BF' : osgeo.gdalconst.GDT_Float32, '64BF' : osgeo.gdalconst.GDT_Float64 } + if hasattr(osgeo.gdalconst, 'GDT_Float16'): + pixtypes['16BF'] = osgeo.gdalconst.GDT_Float16 return pixtypes.get(pt, 'UNKNOWN') def pt2numpy(pt): @@ -60,6 +62,8 @@ def pt2numpy(pt): '32BF' : numpy.float32, '64BF' : numpy.float64 } + if hasattr(numpy, 'float16'): + numpytypes['16BF'] = numpy.float16 return numpytypes.get(pt, numpy.uint8) ############################################################################### diff --git a/raster/test/cunit/cu_pixtype.c b/raster/test/cunit/cu_pixtype.c index 45333a35e..b69db7b37 100644 --- a/raster/test/cunit/cu_pixtype.c +++ b/raster/test/cunit/cu_pixtype.c @@ -4,6 +4,7 @@ * * Copyright (C) 2012 Regents of the University of California * + * Copyright (C) 2025 Darafei Praliaskouski * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -32,6 +33,7 @@ static void test_pixtype_size() { CU_ASSERT_EQUAL(rt_pixtype_size(PT_8BSI), 1); CU_ASSERT_EQUAL(rt_pixtype_size(PT_16BUI), 2); CU_ASSERT_EQUAL(rt_pixtype_size(PT_16BSI), 2); + CU_ASSERT_EQUAL(rt_pixtype_size(PT_16BF), 2); CU_ASSERT_EQUAL(rt_pixtype_size(PT_32BUI), 4); CU_ASSERT_EQUAL(rt_pixtype_size(PT_32BSI), 4); CU_ASSERT_EQUAL(rt_pixtype_size(PT_32BF), 4); @@ -52,6 +54,7 @@ static void test_pixtype_name() { CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_8BSI), "8BSI"); CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_16BUI), "16BUI"); CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_16BSI), "16BSI"); + CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_16BF), "16BF"); CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_32BUI), "32BUI"); CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_32BSI), "32BSI"); CU_ASSERT_STRING_EQUAL(rt_pixtype_name(PT_32BF), "32BF"); @@ -68,6 +71,7 @@ static void test_pixtype_index_from_name() { CU_ASSERT_EQUAL(rt_pixtype_index_from_name("8BSI"), PT_8BSI); CU_ASSERT_EQUAL(rt_pixtype_index_from_name("16BUI"), PT_16BUI); CU_ASSERT_EQUAL(rt_pixtype_index_from_name("16BSI"), PT_16BSI); + CU_ASSERT_EQUAL(rt_pixtype_index_from_name("16BF"), PT_16BF); CU_ASSERT_EQUAL(rt_pixtype_index_from_name("32BUI"), PT_32BUI); CU_ASSERT_EQUAL(rt_pixtype_index_from_name("32BSI"), PT_32BSI); CU_ASSERT_EQUAL(rt_pixtype_index_from_name("32BF"), PT_32BF); @@ -84,11 +88,17 @@ static void test_pixtype_get_min_value() { CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_2BUI), rt_util_clamp_to_2BUI((double) CHAR_MIN), DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_4BUI), rt_util_clamp_to_4BUI((double) CHAR_MIN), DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_8BUI), rt_util_clamp_to_8BUI((double) CHAR_MIN), DBL_EPSILON); - CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_8BSI), rt_util_clamp_to_8BSI((double) SCHAR_MIN), DBL_EPSILON); - CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_16BUI), rt_util_clamp_to_16BUI((double) SHRT_MIN), DBL_EPSILON); - CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_16BSI), rt_util_clamp_to_16BSI((double) SHRT_MIN), DBL_EPSILON); - CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_32BUI), rt_util_clamp_to_32BUI((double) INT_MIN), DBL_EPSILON); - CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_32BSI), rt_util_clamp_to_32BSI((double) INT_MIN), DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL( + rt_pixtype_get_min_value(PT_8BSI), rt_util_clamp_to_8BSI((double)SCHAR_MIN), DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL( + rt_pixtype_get_min_value(PT_16BUI), rt_util_clamp_to_16BUI((double)SHRT_MIN), DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL( + rt_pixtype_get_min_value(PT_16BSI), rt_util_clamp_to_16BSI((double)SHRT_MIN), DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_16BF), -POSTGIS_RT_16F_MAX, DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL( + rt_pixtype_get_min_value(PT_32BUI), rt_util_clamp_to_32BUI((double)INT_MIN), DBL_EPSILON); + CU_ASSERT_DOUBLE_EQUAL( + rt_pixtype_get_min_value(PT_32BSI), rt_util_clamp_to_32BSI((double)INT_MIN), DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_32BF), -FLT_MAX, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(rt_pixtype_get_min_value(PT_64BF), -DBL_MAX, DBL_EPSILON); @@ -200,6 +210,14 @@ static void test_pixtype_compare_clamped_values() { CU_ASSERT_EQUAL(rt_pixtype_compare_clamped_values(PT_16BSI, 32767, -32767, &isequal), ES_NONE); CU_ASSERT(!isequal); + /* 16BF */ + CU_ASSERT_EQUAL(rt_pixtype_compare_clamped_values(PT_16BF, 1.5, 1.5, &isequal), ES_NONE); + CU_ASSERT(isequal); + CU_ASSERT_EQUAL(rt_pixtype_compare_clamped_values(PT_16BF, 70000.0, 65504.0, &isequal), ES_NONE); + CU_ASSERT(isequal); + CU_ASSERT_EQUAL(rt_pixtype_compare_clamped_values(PT_16BF, -70000.0, 0.0, &isequal), ES_NONE); + CU_ASSERT(!isequal); + /* 32BUI */ CU_ASSERT_EQUAL(rt_pixtype_compare_clamped_values(PT_32BUI, 4294967295UL, 4294967295UL, &isequal), ES_NONE); CU_ASSERT(isequal); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + raster/doc/RFC1-SerializedFormat | 4 +- raster/rt_core/librtcore.h | 35 +++++++---- raster/rt_core/rt_band.c | 65 +++++++++++++++----- raster/rt_core/rt_pixel.c | 15 ++++- raster/rt_core/rt_serialize.c | 11 ++++ raster/rt_core/rt_statistics.c | 8 ++- raster/rt_core/rt_util.c | 111 ++++++++++++++++++++++++++++++++-- raster/rt_core/rt_wkb.c | 11 ++++ raster/scripts/python/pixval.py | 2 + raster/scripts/python/raster2pgsql.py | 7 +++ raster/scripts/python/rtrowdump.py | 4 ++ raster/test/cunit/cu_pixtype.c | 28 +++++++-- 13 files changed, 258 insertions(+), 44 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Sun Nov 30 12:07:12 2025 From: trac at osgeo.org (PostGIS) Date: Sun, 30 Nov 2025 20:07:12 -0000 Subject: [PostGIS] #5941: Support GDT_Float16 Pixel Type In-Reply-To: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> References: <049.84e741e2cf8e7d1662f253308d20e0d6@osgeo.org> Message-ID: <064.74811c09e0df71d6ba6f4c05ca8e241e@osgeo.org> #5941: Support GDT_Float16 Pixel Type --------------------------+--------------------------- Reporter: pramsey | Owner: pramsey Type: enhancement | Status: closed Priority: high | Milestone: PostGIS 3.7.0 Component: raster | Version: master Resolution: fixed | Keywords: --------------------------+--------------------------- Changes (by Darafei Praliaskouski ): * resolution: => fixed * status: new => closed Comment: In [changeset:"ef19e8fb446e05d42f54adc59d51ebdf2e88c5e0/git" ef19e8f/git]: {{{#!CommitTicketReference repository="git" revision="ef19e8fb446e05d42f54adc59d51ebdf2e88c5e0" [raster] Support GDT_Float16 pixel type Closes #5941 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sun Nov 30 18:31:54 2025 From: git at osgeo.org (git at osgeo.org) Date: Sun, 30 Nov 2025 18:31:54 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-6-g11021e049 Message-ID: <20251201023155.2EF581690FB@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, stable-3.6 has been updated via 11021e049f8b8a2c1031c37d0c0c41d1b0cbb3bb (commit) from 4a9da4fcaa9de8e7dc87b6a3be7569cdc2e17e95 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 11021e049f8b8a2c1031c37d0c0c41d1b0cbb3bb Author: Regina Obe Date: Sun Nov 30 21:31:45 2025 -0500 Get rid of drone and refine wood-pecker to include removed drone items diff --git a/.drone-1.0.yml b/.drone-1.0.yml deleted file mode 100644 index 1d26bed26..000000000 --- a/.drone-1.0.yml +++ /dev/null @@ -1,38 +0,0 @@ -# This is for the drone 1.0 agent -# https://docs.drone.io/user-guide/pipeline/steps/ -# https://dronie.osgeo.org #1.0 server - -# See https://git.osgeo.org/gitea/postgis/postgis-docker -# todo: add docker images from https://hub.docker.com/r/postgis/postgis-build-env/tags/ -test-image: &test-image docker.osgeo.org/postgis/build-test:trisquel11 -clone: &clone - image: plugins/git - depth: 50 - recursive: false - -kind: pipeline -name: build -clone: *clone -steps: - - - name: autogen - image: *test-image - pull: always - commands: - - ./autogen.sh - depends_on: [ clone ] - - - name: build-13 - image: *test-image - pull: never - commands: - - PGVER=13 sh ci/dronie/postgis_regress.sh - depends_on: [ autogen ] - - - name: build-14 - image: *test-image - pull: never - commands: - - PGVER=14 sh ci/dronie/postgis_regress.sh - depends_on: [ autogen ] - diff --git a/.woodpecker/regress.yml b/.woodpecker/regress.yml index cbf30231d..09504b1e1 100644 --- a/.woodpecker/regress.yml +++ b/.woodpecker/regress.yml @@ -68,6 +68,24 @@ steps: - <<: *steps-env - <<: *steps-pg-build + build-pg13: + image: *test-image + depends_on: autogen + environment: + PGVER: 13 + commands: + - <<: *steps-env + - <<: *steps-pg-build + + build-pg14: + image: *test-image + depends_on: autogen + environment: + PGVER: 14 + commands: + - <<: *steps-env + - <<: *steps-pg-build + build-pg17: image: *test-image depends_on: autogen @@ -77,16 +95,6 @@ steps: - <<: *steps-env - <<: *steps-pg-build - check-pg12: - image: *test-image - depends_on: build-pg12 - environment: - PGVER: 12 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-test-preinstall - check-pg17: image: *test-image depends_on: build-pg17 @@ -129,14 +137,3 @@ steps: - <<: *steps-start-postgresql - <<: *steps-pg-install - <<: *steps-pg-test-all-upgrades - - upgradecheck-pg17: - image: *test-image - depends_on: installcheck-pg17 - environment: - PGVER: 17 - commands: - - <<: *steps-env - - <<: *steps-start-postgresql - - <<: *steps-pg-install - - <<: *steps-pg-test-all-upgrades ----------------------------------------------------------------------- Summary of changes: .drone-1.0.yml | 38 -------------------------------------- .woodpecker/regress.yml | 33 +++++++++++++++------------------ 2 files changed, 15 insertions(+), 56 deletions(-) delete mode 100644 .drone-1.0.yml hooks/post-receive -- PostGIS From git at osgeo.org Sun Nov 30 18:47:53 2025 From: git at osgeo.org (git at osgeo.org) Date: Sun, 30 Nov 2025 18:47:53 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-239-g3b585a8fe Message-ID: <20251201024754.B514A169145@trac.osgeo.org> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "PostGIS". The branch, master has been updated via 3b585a8fe4c3d3078ee1c4028c2182e9bb2e4690 (commit) from ef19e8fb446e05d42f54adc59d51ebdf2e88c5e0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3b585a8fe4c3d3078ee1c4028c2182e9bb2e4690 Author: Teramoto Ikuhiro Date: Mon Dec 1 01:35:33 2025 +0000 Translated PostGIS Manual using Weblate (Japanese) Currently translated at 98.6% (5814 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/ja/ diff --git a/doc/po/ja/postgis-manual.po b/doc/po/ja/postgis-manual.po index 92857e0d0..a714bf2fe 100644 --- a/doc/po/ja/postgis-manual.po +++ b/doc/po/ja/postgis-manual.po @@ -10,10 +10,10 @@ msgstr "" "Project-Id-Version: postgis 3.5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-11-28 08:47+0000\n" +"PO-Revision-Date: 2025-12-01 02:47+0000\n" "Last-Translator: Teramoto Ikuhiro \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -8456,6 +8456,10 @@ msgid "" "xlink:href=\"http://www.graphicsmagick.org/\"> http://www.graphicsmagick." "org/ ." msgstr "" +"GraphicsMagick (gm convert) " +"???????????????????GraphicsMagick? http://www.graphicsmagick.org/ " +"??????" #. Tag: title #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/ja/postgis-manual.po | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS