Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | implementing ST_SnapAndSplit, ST_LinestringXxxSegmentLength and fixing a bug in ST_InterpolatePoint |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a02cd88d8d37a8cfa36462b894775517 |
User & Date: | sandro 2019-09-01 14:42:50 |
2020-01-10
| ||
17:03 | switching to automake 1.16.1 and many miscellaneous fixes check-in: 4ed175d571 user: sandro tags: trunk | |
2019-09-01
| ||
14:42 | implementing ST_SnapAndSplit, ST_LinestringXxxSegmentLength and fixing a bug in ST_InterpolatePoint check-in: a02cd88d8d user: sandro tags: trunk | |
2019-07-31
| ||
21:23 | removing any reference to the infamous DQS misfeature - take two check-in: 41b92e961f user: sandro tags: trunk | |
Changes to spatialite-sql-latest.html.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 .... 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 .... 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 |
<th colspan="3" bgcolor="#d0d0d0">Summary</th></tr> <tr><td><b>spatialite_version</b></td> <td>spatialite_version( void ) : <i>String</i></td> <td colspan="3">returns the current <b>SpatiaLite</b> version as a text string</td></tr> <tr><td><b>spatialite_target_cpu</b></td> <td>spatialite_target_cpu( void ) : <i>String</i></td> <td colspan="3">returns the current <b>SpatiaLite</b> Target CPU as a text string</td></tr> <tr><td><b>requires_strict_sql_quoting</b></td> <td>requires_strict_sql_quoting( void ) : <i>String</i></td> <td colspan="3">returns <b>TRUE</b> or<b>FALSE</b> depending on the actual behavior of current <b>SQLite</b>.<br> <u><b>Note</b></u>:SQLite can effectively enforce strict SQL quoting (<b>single-quoted</b> text constants and <b>double-quoted</b> table and column names) only since version <b>3.29.0</b>, depending on build-time settings.</td></tr> <tr><td><b>freexl_version</b></td> <td>freexl_version( void ) : <i>String</i></td> <td colspan="3">returns the current <b>FreeXL</b> version as a text string<br> or NULL if FreeXL is currently unsupported</td></tr> ................................................................................ <tr><td><b>RemovePoint</b></td> <td>RemovePoint( line <i>LineString</i> , position <i>Integer</i> ) : <i>Linestring</i><hr> ST_RemovePoint( line <i>LineString</i> , position <i>Integer</i> ) : <i>Linestring</i></td> <td></td> <td align="center" bgcolor="#d0f0d0">base</td> <td>returns a new Linestring by removing the Point at <b>position</b> (zero-based index).<br> <b>NULL</b> will be returned if any error is encountered.</td></tr> <tr><td colspan="5" align="center" bgcolor="#f0f0c0"> <h3><a name="p8">SQL functions on type Surface [Polygon or Ring]</a></h3></td></tr> <tr><th bgcolor="#d0d0d0">Function</th> <th bgcolor="#d0d0d0">Syntax</th> <th bgcolor="#d0d0d0">OGC<br>defined</th> <th bgcolor="#d0d0d0">required<br>module</th> <th bgcolor="#d0d0d0">Summary</th></tr> ................................................................................ <tr><td><b>SplitRight</b></td> <td>SplitRight( geom <i>Geometry</i>, blade <i>Geometry</i> ) : <i>Geometry</i><hr> ST_SplitRight( geom <i>Geometry</i> , blade <i>Geometry</i> ) : <i>Geometry</i></td> <td></td> <td align="center" bgcolor="#f0d0f0">RTTOPO</td> <td>return a new Geometry collecting all items resulting by splitting the input Geometry by the <i>blade</i> and falling on the <i>right side</i>.<br> NULL is returned on failure (or if the <i>right side</i> is empty).</td></tr> <tr><td><b>Azimuth</b></td> <td>Azimuth( pt1 <i>Geometry</i>, pt2 <i>Geometry</i> ) : <i>Double precision</i><hr> ST_Azimuth( pt1 <i>Geometry</i> , pt2 <i>Geometry</i> ) : <i>Double precision</i></td> <td></td> <td align="center" bgcolor="#f0d0f0">RTTOPO</td> <td>return the angle (in radians) from the horizontal of the vector defined by <b>pt1</b> and <b>pt2</b>.<br> Both <b>pt1</b> and <b>pt2</b> are expected to be simple Points.<br> |
| | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 .... 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 .... 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 |
<th colspan="3" bgcolor="#d0d0d0">Summary</th></tr> <tr><td><b>spatialite_version</b></td> <td>spatialite_version( void ) : <i>String</i></td> <td colspan="3">returns the current <b>SpatiaLite</b> version as a text string</td></tr> <tr><td><b>spatialite_target_cpu</b></td> <td>spatialite_target_cpu( void ) : <i>String</i></td> <td colspan="3">returns the current <b>SpatiaLite</b> Target CPU as a text string</td></tr> <tr><td><b>check_strict_sql_quoting</b></td> <td>rcheck_strict_sql_quoting( void ) : <i>String</i></td> <td colspan="3">returns <b>TRUE</b> or<b>FALSE</b> depending on the actual behavior of current <b>SQLite</b>.<br> <u><b>Note</b></u>:SQLite can effectively enforce strict SQL quoting (<b>single-quoted</b> text constants and <b>double-quoted</b> table and column names) only since version <b>3.29.0</b>, depending on build-time settings.</td></tr> <tr><td><b>freexl_version</b></td> <td>freexl_version( void ) : <i>String</i></td> <td colspan="3">returns the current <b>FreeXL</b> version as a text string<br> or NULL if FreeXL is currently unsupported</td></tr> ................................................................................ <tr><td><b>RemovePoint</b></td> <td>RemovePoint( line <i>LineString</i> , position <i>Integer</i> ) : <i>Linestring</i><hr> ST_RemovePoint( line <i>LineString</i> , position <i>Integer</i> ) : <i>Linestring</i></td> <td></td> <td align="center" bgcolor="#d0f0d0">base</td> <td>returns a new Linestring by removing the Point at <b>position</b> (zero-based index).<br> <b>NULL</b> will be returned if any error is encountered.</td></tr> <tr><td><b>LinestringMinSegmentLength</b></td> <td>LinestringMinSegmentLength( line <i>LineString</i> ) : <i>Double precision</i><hr> LinestringMinSegmentLength( line <i>LineString</i> , boolean <i>ignore_repeated_vertices</i> ) : <i>Double precision</i><hr> ST_LinestringMinSegmentLength( line <i>LineString</i> ) : <i>Double precision</i><hr> ST_LinestringMinSegmentLength( line <i>LineString</i> , boolean <i>ignore_repeated_vertices</i> ) : <i>Double precision</i></td> <td></td> <td align="center" bgcolor="#d0f0d0">base</td> <td><ul><li>any eventual repeated vertex will be ignored or considered accordingly to the seeting of the optional argument <b>ignore_repeated_vertices</b><br> The default setting is <b>TRUE</b> (that is, ignore)</nr></li></ul> returns the length of the shortest segment in the Linestring.<br> <b>NULL</b> will be returned if any error is encountered.<hr> <b>Note</b>: this function only accepts simple Linestrings; Geometries containing any Point or Polygon, or containing more than a single Linesting will be considered invalid.</td></tr> <tr><td><b>LinestringMaxSegmentLength</b></td> <td>LinestringMaxSegmentLength( line <i>LineString</i> ) : <i>Double precision</i><hr> ST_LinestringMaxSegmentLength( line <i>LineString</i> ) : <i>Double precision</i></td> <td></td> <td align="center" bgcolor="#d0f0d0">base</td> <td>returns the length of the longest segment in the Linestring.<br> <b>NULL</b> will be returned if any error is encountered.<hr> <b>Note</b>: this function only accepts simple Linestrings; Geometries containing any Point or Polygon, or containing more than a single Linesting will be considered invalid.</td></tr> <tr><td><b>LinestringAvgSegmentLength</b></td> <td>LinestringAvgSegmentLength( line <i>LineString</i> ) : <i>Double precision</i><hr> ST_LinestringAvgSegmentLength( line <i>LineString</i> ) : <i>Double precision</i></td> <td></td> <td align="center" bgcolor="#d0f0d0">base</td> <td>returns the average length of segments in the Linestring.<br> <b>NULL</b> will be returned if any error is encountered.<hr> <b>Note</b>: this function only accepts simple Linestrings; Geometries containing any Point or Polygon, or containing more than a single Linesting will be considered invalid.</td></tr> <tr><td colspan="5" align="center" bgcolor="#f0f0c0"> <h3><a name="p8">SQL functions on type Surface [Polygon or Ring]</a></h3></td></tr> <tr><th bgcolor="#d0d0d0">Function</th> <th bgcolor="#d0d0d0">Syntax</th> <th bgcolor="#d0d0d0">OGC<br>defined</th> <th bgcolor="#d0d0d0">required<br>module</th> <th bgcolor="#d0d0d0">Summary</th></tr> ................................................................................ <tr><td><b>SplitRight</b></td> <td>SplitRight( geom <i>Geometry</i>, blade <i>Geometry</i> ) : <i>Geometry</i><hr> ST_SplitRight( geom <i>Geometry</i> , blade <i>Geometry</i> ) : <i>Geometry</i></td> <td></td> <td align="center" bgcolor="#f0d0f0">RTTOPO</td> <td>return a new Geometry collecting all items resulting by splitting the input Geometry by the <i>blade</i> and falling on the <i>right side</i>.<br> NULL is returned on failure (or if the <i>right side</i> is empty).</td></tr> <tr><td><b>SnapAndSplit</b></td> <td>SnapAndSplit( geom1 <i>Geometry</i> , geom2 <i>Geometry</i> , tolerance <i>Double precision</i> ) : <i>Geometry</i><hr> ST_SnapAndSplit( geom1 <i>Geometry</i> , geom2 <i>Geometry</i> , tolerance <i>Double precision</i> ) : <i>Geometry</i></td> <td></td> <td align="center" bgcolor="#f0d0f0">RTTOPO</td> <td>This one simply is a <i>convenience function</i> accepting the same arguments of <b>ST_Snap()</b> (with identical meaning). <ul> <li><b>geom1</b> is expected to be a <b>LINESTRING</b> or a <b>MULTILINESTRING</b></li> <li><b>geom2</b> is expected to be a <b>POINT</b> or a <b>MULTIPOINT</b></li> <li>first pass: <b>geom1</b> will be snapped against <b>geom2</b></li> <li>second pass: the resulting geometry returned by the above <b>snap</b> will then be <b>split</b> using <b>geom2</b> as the cutting blade.</li> <li>the final result returned by <b>SnapAndSplit</b> will always be a <b>MULTILINESTRING</b></li> </ul> NULL is returned for invalid arguments</td></tr> <tr><td><b>Azimuth</b></td> <td>Azimuth( pt1 <i>Geometry</i>, pt2 <i>Geometry</i> ) : <i>Double precision</i><hr> ST_Azimuth( pt1 <i>Geometry</i> , pt2 <i>Geometry</i> ) : <i>Double precision</i></td> <td></td> <td align="center" bgcolor="#f0d0f0">RTTOPO</td> <td>return the angle (in radians) from the horizontal of the vector defined by <b>pt1</b> and <b>pt2</b>.<br> Both <b>pt1</b> and <b>pt2</b> are expected to be simple Points.<br> |
Changes to src/gaiageo/gg_geometries.c.
4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 |
else { gaiaGetPointXYZM (pL->Coords, iv, &x, &y, &z, &m); } if (iv != 0) { progressive_length += sqrt (((x0 - x) * (x0 - x)) + ((y0 - y) * (y0 - y))); if (progressive_length == normalized_len) { /* special case: exactly intercepting a vertex */ *m_value = m; return 1; } if (progressive_length > normalized_len) { /* interpolating the M-Value */ double interval = m - m0; double diff = fraction - pl0; *m_value = m0 + (interval * diff); break; } } x0 = x; y0 = y; m0 = m; pl0 = progressive_length; |
| > > | > | |
4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 |
else { gaiaGetPointXYZM (pL->Coords, iv, &x, &y, &z, &m); } if (iv != 0) { double length = sqrt (((x0 - x) * (x0 - x)) + ((y0 - y) * (y0 - y))); progressive_length += length; if (progressive_length == normalized_len) { /* special case: exactly intercepting a vertex */ *m_value = m; return 1; } if (progressive_length > normalized_len) { /* interpolating the M-Value */ double interval = m - m0; double diff = normalized_len - pl0; double ratio = diff / length; *m_value = m0 + (interval * ratio); break; } } x0 = x; y0 = y; m0 = m; pl0 = progressive_length; |
Changes to src/spatialite/spatialite.c.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 ... 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 ..... 23876 23877 23878 23879 23880 23881 23882 23883 23884 23885 23886 23887 23888 23889 ..... 29755 29756 29757 29758 29759 29760 29761 29762 29763 29764 29765 29766 29767 29768 ..... 46146 46147 46148 46149 46150 46151 46152 46153 46154 46155 46156 46157 46158 46159 46160 46161 46162 ..... 49559 49560 49561 49562 49563 49564 49565 49566 49567 49568 49569 49570 49571 49572 ..... 50135 50136 50137 50138 50139 50140 50141 50142 50143 50144 50145 50146 50147 50148 |
#else #define FRMT64 "%lld" #define FRMT64_WO_PCT "lld" #endif #define GAIA_UNUSED() if (argc || argv) argc = argc; struct gaia_geom_chain_item { /* a struct used to store a chain item */ gaiaGeomCollPtr geom; struct gaia_geom_chain_item *next; }; ................................................................................ sql = sqlite3_mprintf ("DROP TABLE IF EXISTS %Q", table); sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (table); return ok; } static void fnct_requires_strict_sql_quoting (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / requires_strict_sql_quoting() / / return TRUE of FALSE depending on SQLite3 supporting the DQS misfeature or not */ int ret; sqlite3 *sqlite = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ ret = do_check_dqs (sqlite); ................................................................................ / Please note: starting since 4.0.0 this function will ignore / any Linestring (only Polygons will be considered) / */ void *data = sqlite3_user_data (context); length_common (data, context, argc, argv, 1); } #ifdef ENABLE_RTTOPO /* only if RTTOPO is enabled */ static void fnct_3dLength (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: ................................................................................ gpkg_mode, tiny_point); sqlite3_result_blob (context, p_result, len, free); gaiaFreeGeomColl (result); } } gaiaFreeGeomColl (geo); } static void fnct_Split (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Split(BLOBencoded input, BLOBencoded blade) / ................................................................................ SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_spatialite_version, 0, 0, 0); #endif sqlite3_create_function_v2 (db, "spatialite_target_cpu", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_spatialite_target_cpu, 0, 0, 0); sqlite3_create_function_v2 (db, "requires_strict_sql_quoting", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_requires_strict_sql_quoting, 0, 0, 0); sqlite3_create_function_v2 (db, "freexl_version", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_freexl_version, 0, 0, 0); sqlite3_create_function_v2 (db, "proj4_version", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_proj4_version, 0, 0, 0); sqlite3_create_function_v2 (db, "proj_version", 0, ................................................................................ fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Perimeter", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Perimeter", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "Area", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Area, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Area", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Area, 0, 0, 0); sqlite3_create_function_v2 (db, "Circularity", 1, ................................................................................ fnct_SplitLeft, 0, 0, 0); sqlite3_create_function_v2 (db, "SplitRight", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SplitRight, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_SplitRight", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SplitRight, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Node", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Node, 0, 0, 0); sqlite3_create_function_v2 (db, "SelfIntersections", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SelfIntersections, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_SelfIntersections", 1, |
> > > > | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 ... 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 ..... 23880 23881 23882 23883 23884 23885 23886 23887 23888 23889 23890 23891 23892 23893 23894 23895 23896 23897 23898 23899 23900 23901 23902 23903 23904 23905 23906 23907 23908 23909 23910 23911 23912 23913 23914 23915 23916 23917 23918 23919 23920 23921 23922 23923 23924 23925 23926 23927 23928 23929 23930 23931 23932 23933 23934 23935 23936 23937 23938 23939 23940 23941 23942 23943 23944 23945 23946 23947 23948 23949 23950 23951 23952 23953 23954 23955 23956 23957 23958 23959 23960 23961 23962 23963 23964 23965 23966 23967 23968 23969 23970 23971 23972 23973 23974 23975 23976 23977 23978 23979 23980 23981 23982 23983 23984 23985 23986 23987 23988 23989 23990 23991 23992 23993 23994 23995 23996 23997 23998 23999 24000 24001 24002 24003 24004 24005 24006 24007 24008 24009 24010 24011 24012 24013 24014 24015 24016 24017 24018 24019 24020 24021 24022 24023 24024 24025 24026 24027 24028 24029 24030 24031 24032 24033 24034 24035 24036 24037 24038 24039 24040 24041 24042 24043 24044 24045 24046 24047 24048 24049 24050 24051 ..... 29917 29918 29919 29920 29921 29922 29923 29924 29925 29926 29927 29928 29929 29930 29931 29932 29933 29934 29935 29936 29937 29938 29939 29940 29941 29942 29943 29944 29945 29946 29947 29948 29949 29950 29951 29952 29953 29954 29955 29956 29957 29958 29959 29960 29961 29962 29963 29964 29965 29966 29967 29968 29969 29970 29971 29972 29973 29974 29975 29976 29977 29978 29979 29980 29981 29982 29983 29984 29985 29986 29987 29988 29989 29990 29991 29992 29993 29994 29995 29996 29997 29998 29999 30000 30001 30002 30003 30004 30005 30006 30007 30008 30009 30010 30011 30012 30013 30014 30015 30016 30017 30018 30019 30020 30021 30022 30023 30024 30025 30026 30027 30028 30029 30030 30031 30032 30033 30034 30035 30036 30037 30038 30039 30040 30041 30042 30043 30044 30045 30046 30047 30048 30049 30050 30051 30052 30053 30054 30055 30056 ..... 46434 46435 46436 46437 46438 46439 46440 46441 46442 46443 46444 46445 46446 46447 46448 46449 46450 ..... 49847 49848 49849 49850 49851 49852 49853 49854 49855 49856 49857 49858 49859 49860 49861 49862 49863 49864 49865 49866 49867 49868 49869 49870 49871 49872 49873 49874 49875 49876 49877 49878 49879 49880 49881 49882 49883 49884 ..... 50447 50448 50449 50450 50451 50452 50453 50454 50455 50456 50457 50458 50459 50460 50461 50462 50463 50464 50465 50466 |
#else #define FRMT64 "%lld" #define FRMT64_WO_PCT "lld" #endif #define GAIA_UNUSED() if (argc || argv) argc = argc; #define LINESTRING_MIN_SEGMENT_LENGTH 1 #define LINESTRING_MAX_SEGMENT_LENGTH 2 #define LINESTRING_AVG_SEGMENT_LENGTH 3 struct gaia_geom_chain_item { /* a struct used to store a chain item */ gaiaGeomCollPtr geom; struct gaia_geom_chain_item *next; }; ................................................................................ sql = sqlite3_mprintf ("DROP TABLE IF EXISTS %Q", table); sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (table); return ok; } static void fnct_check_strict_sql_quoting (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / check_strict_sql_quoting() / / return TRUE of FALSE depending on SQLite3 supporting the DQS misfeature or not */ int ret; sqlite3 *sqlite = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ ret = do_check_dqs (sqlite); ................................................................................ / Please note: starting since 4.0.0 this function will ignore / any Linestring (only Polygons will be considered) / */ void *data = sqlite3_user_data (context); length_common (data, context, argc, argv, 1); } static void linestring_segment_length_common (sqlite3_context * context, int argc, sqlite3_value ** argv, int mode) { /* common implementation supporting LinestringXxxSegmentLenght */ unsigned char *p_blob; int n_bytes; int ignore_repeated_vertices = 1; int iv; double x; double y; double z; double m; double last_x; double last_y; double min = DBL_MAX; double max = 0.0; double tot = 0.0; int n = 0; gaiaLinestringPtr ln; gaiaGeomCollPtr geo = NULL; int gpkg_amphibious = 0; int gpkg_mode = 0; struct splite_internal_cache *cache = sqlite3_user_data (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (cache != NULL) { gpkg_amphibious = cache->gpkg_amphibious_mode; gpkg_mode = cache->gpkg_mode; } if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) { sqlite3_result_null (context); return; } if (argc == 2) { if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } ignore_repeated_vertices = sqlite3_value_int (argv[1]); } p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); n_bytes = sqlite3_value_bytes (argv[0]); geo = gaiaFromSpatiaLiteBlobWkbEx (p_blob, n_bytes, gpkg_mode, gpkg_amphibious); if (!geo) { sqlite3_result_null (context); return; } if (!is_single_linestring (geo)) { gaiaFreeGeomColl (geo); sqlite3_result_null (context); return; } ln = geo->FirstLinestring; for (iv = 0; iv < ln->Points; iv++) { if (geo->DimensionModel == GAIA_XY_Z) { gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); } else if (geo->DimensionModel == GAIA_XY_M) { gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); } else if (geo->DimensionModel == GAIA_XY_Z_M) { gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); } else { gaiaGetPoint (ln->Coords, iv, &x, &y); } if (iv > 0) { int ok = 1; if (ignore_repeated_vertices) { if (last_x == x && last_y == y) ok = 0; } if (ok) { double l = sqrt (((last_x - x) * (last_x - x)) + ((last_y - y) * (last_y - y))); if (l < min) min = l; if (l > max) max = l; tot += l; n++; } } last_x = x; last_y = y; } if (mode == LINESTRING_MIN_SEGMENT_LENGTH) sqlite3_result_double (context, min); else if (mode == LINESTRING_MAX_SEGMENT_LENGTH) sqlite3_result_double (context, max); else sqlite3_result_double (context, tot / (double) n); } static void fnct_LinestringMinSegmentLength (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ST_LinestringMinSegmentLength(BLOB encoded LINESTRING) / ST_LinestringMinSegmentLength(BLOB encoded LINESTRING, BOOL ignore_repeated_vertices) / / returns the length of the shortest segment in the Linestring / or NULL if any error is encountered / */ linestring_segment_length_common (context, argc, argv, LINESTRING_MIN_SEGMENT_LENGTH); } static void fnct_LinestringMaxSegmentLength (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ST_LinsetringMaxSegmentLength(BLOB encoded LINESTRING) / / returns the length of the longest segment in the Linstring / or NULL if any error is encountered / */ linestring_segment_length_common (context, argc, argv, LINESTRING_MAX_SEGMENT_LENGTH); } static void fnct_LinestringAvgSegmentLength (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ST_LinestringMaxSegmentLength(BLOB encoded LINESTRING) / / returns the average segment length in the Linstring / or NULL if any error is encountered / */ linestring_segment_length_common (context, argc, argv, LINESTRING_AVG_SEGMENT_LENGTH); } #ifdef ENABLE_RTTOPO /* only if RTTOPO is enabled */ static void fnct_3dLength (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: ................................................................................ gpkg_mode, tiny_point); sqlite3_result_blob (context, p_result, len, free); gaiaFreeGeomColl (result); } } gaiaFreeGeomColl (geo); } static int is_line (gaiaGeomCollPtr geom) { /* checking for a Linestring or MultiLinestring */ if (geom->FirstPoint != NULL || geom->FirstPolygon != NULL) return 0; if (geom->FirstLinestring != NULL) return 1; return 0; } static int is_point_blade (gaiaGeomCollPtr geom) { /* checking for a Point or MultiPoint */ if (geom->FirstLinestring != NULL || geom->FirstPolygon != NULL) return 0; if (geom->FirstPoint != NULL) return 1; return 0; } static void fnct_SnapAndSplit (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / SnapAndSplit(BLOBencoded geometry1, BLOBencoded geometry2, double tolerance) / / - geometry1 is expected to be a LINESTRING or MULTILINESTRING / - geometry2 is expected to be a MULTIPOINT / - in a first pass geometry1 will be snapped against geometry2 / - then the intermediate result of Snap will be Split using / geometry2 as the cutting blade. / .- / Returns a new Geometry of the MULTILINESTRING type / NULL is returned for invalid arguments */ unsigned char *p_blob; int n_bytes; int int_value; double tolerance; gaiaGeomCollPtr geo1 = NULL; gaiaGeomCollPtr geo2 = NULL; gaiaGeomCollPtr result_snap; gaiaGeomCollPtr result_split; int gpkg_amphibious = 0; int gpkg_mode = 0; int tiny_point = 0; struct splite_internal_cache *cache = sqlite3_user_data (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (cache != NULL) { gpkg_amphibious = cache->gpkg_amphibious_mode; gpkg_mode = cache->gpkg_mode; tiny_point = cache->tinyPointEnabled; } if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) tolerance = sqlite3_value_double (argv[2]); else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) { int_value = sqlite3_value_int (argv[2]); tolerance = int_value; } else { sqlite3_result_null (context); return; } p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); n_bytes = sqlite3_value_bytes (argv[0]); geo1 = gaiaFromSpatiaLiteBlobWkbEx (p_blob, n_bytes, gpkg_mode, gpkg_amphibious); p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); n_bytes = sqlite3_value_bytes (argv[1]); geo2 = gaiaFromSpatiaLiteBlobWkbEx (p_blob, n_bytes, gpkg_mode, gpkg_amphibious); if (geo1 == NULL || geo2 == NULL) sqlite3_result_null (context); else if (is_line (geo1) == 0) sqlite3_result_null (context); else if (is_point_blade (geo2) == 0) sqlite3_result_null (context); else { void *data = sqlite3_user_data (context); if (data != NULL) result_snap = gaiaSnap_r (data, geo1, geo2, tolerance); else result_snap = gaiaSnap (geo1, geo2, tolerance); if (result_snap == NULL) sqlite3_result_null (context); else { result_split = gaiaSplit (cache, result_snap, geo2); gaiaFreeGeomColl (result_snap); if (result_split == NULL) sqlite3_result_null (context); else { /* builds the BLOB geometry to be returned */ int len; unsigned char *p_result = NULL; result_split->Srid = geo1->Srid; gaiaToSpatiaLiteBlobWkbEx2 (result_split, &p_result, &len, gpkg_mode, tiny_point); sqlite3_result_blob (context, p_result, len, free); gaiaFreeGeomColl (result_split); } } } gaiaFreeGeomColl (geo1); gaiaFreeGeomColl (geo2); } static void fnct_Split (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Split(BLOBencoded input, BLOBencoded blade) / ................................................................................ SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_spatialite_version, 0, 0, 0); #endif sqlite3_create_function_v2 (db, "spatialite_target_cpu", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_spatialite_target_cpu, 0, 0, 0); sqlite3_create_function_v2 (db, "check_strict_sql_quoting", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_check_strict_sql_quoting, 0, 0, 0); sqlite3_create_function_v2 (db, "freexl_version", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_freexl_version, 0, 0, 0); sqlite3_create_function_v2 (db, "proj4_version", 0, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_proj4_version, 0, 0, 0); sqlite3_create_function_v2 (db, "proj_version", 0, ................................................................................ fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Perimeter", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Perimeter", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Perimeter, 0, 0, 0); sqlite3_create_function_v2 (db, "LinestringMinSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMinSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_LinestringMinSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMinSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "LinestringMinSegmentLength", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMinSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_LinestringMinSegmentLength", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMinSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "LinestringMaxSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMaxSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_LinestringMaxSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringMaxSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "LinestringAvgSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringAvgSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_LinestringAvgSegmentLength", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_LinestringAvgSegmentLength, 0, 0, 0); sqlite3_create_function_v2 (db, "Area", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Area, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Area", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Area, 0, 0, 0); sqlite3_create_function_v2 (db, "Circularity", 1, ................................................................................ fnct_SplitLeft, 0, 0, 0); sqlite3_create_function_v2 (db, "SplitRight", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SplitRight, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_SplitRight", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SplitRight, 0, 0, 0); sqlite3_create_function_v2 (db, "SnapAndSplit", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SnapAndSplit, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_SnapAndSplit", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SnapAndSplit, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_Node", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Node, 0, 0, 0); sqlite3_create_function_v2 (db, "SelfIntersections", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_SelfIntersections, 0, 0, 0); sqlite3_create_function_v2 (db, "ST_SelfIntersections", 1, |
Changes to test/elba-sezcen.sqlite.
cannot compute difference between binary files
Changes to test/sql_stmt_rtgeom_tests/Makefile.am.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
maxdistance3.testcase \ maxdistance4.testcase \ maxdistance5.testcase \ maxdistance6.testcase \ maxdistance7.testcase \ maxdistance8.testcase \ maxdistance9.testcase \ st_asx3d10.testcase \ st_asx3d11.testcase \ st_asx3d12.testcase \ st_asx3d13.testcase \ st_asx3d14.testcase \ st_asx3d15.testcase \ st_asx3d16.testcase \ |
> > > > > > > > > > > > > > > > > |
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
maxdistance3.testcase \ maxdistance4.testcase \ maxdistance5.testcase \ maxdistance6.testcase \ maxdistance7.testcase \ maxdistance8.testcase \ maxdistance9.testcase \ snapsplit1.testcase \ snapsplit2.testcase \ snapsplit3.testcase \ snapsplit4.testcase \ snapsplit5.testcase \ snapsplit6.testcase \ snapsplit7.testcase \ snapsplit8.testcase \ snapsplit9.testcase \ snapsplit10.testcase \ snapsplit11.testcase \ snapsplit12.testcase \ snapsplit13.testcase \ snapsplit14.testcase \ snapsplit15.testcase \ snapsplit16.testcase \ snapsplit17.testcase \ st_asx3d10.testcase \ st_asx3d11.testcase \ st_asx3d12.testcase \ st_asx3d13.testcase \ st_asx3d14.testcase \ st_asx3d15.testcase \ st_asx3d16.testcase \ |
Changes to test/sql_stmt_rtgeom_tests/Makefile.in.
332 333 334 335 336 337 338 339 340 341 342 343 344 345 |
maxdistance3.testcase \ maxdistance4.testcase \ maxdistance5.testcase \ maxdistance6.testcase \ maxdistance7.testcase \ maxdistance8.testcase \ maxdistance9.testcase \ st_asx3d10.testcase \ st_asx3d11.testcase \ st_asx3d12.testcase \ st_asx3d13.testcase \ st_asx3d14.testcase \ st_asx3d15.testcase \ st_asx3d16.testcase \ |
> > > > > > > > > > > > > > > > > |
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 |
maxdistance3.testcase \ maxdistance4.testcase \ maxdistance5.testcase \ maxdistance6.testcase \ maxdistance7.testcase \ maxdistance8.testcase \ maxdistance9.testcase \ snapsplit1.testcase \ snapsplit2.testcase \ snapsplit3.testcase \ snapsplit4.testcase \ snapsplit5.testcase \ snapsplit6.testcase \ snapsplit7.testcase \ snapsplit8.testcase \ snapsplit9.testcase \ snapsplit10.testcase \ snapsplit11.testcase \ snapsplit12.testcase \ snapsplit13.testcase \ snapsplit14.testcase \ snapsplit15.testcase \ snapsplit16.testcase \ snapsplit17.testcase \ st_asx3d10.testcase \ st_asx3d11.testcase \ st_asx3d12.testcase \ st_asx3d13.testcase \ st_asx3d14.testcase \ st_asx3d15.testcase \ st_asx3d16.testcase \ |
Added test/sql_stmt_rtgeom_tests/snapsplit1.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, NULL LINESTRING :memory: #use in-memory database SELECT SnapAndSplit(NULL, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(NULL, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit10.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, NULL Tolerance :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), NULL); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), NULL) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit11.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, TEXT Tolerance :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), '0.1'); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), '0.1') (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit12.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, INT Tolerance :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0)) MULTILINESTRING((0 5, 0 0), (0 0, 5 0), (5 0, 10 0, 10 5), (10 5, 10 10, 5 10), (5 10, 0 10, 0 5)) |
Added test/sql_stmt_rtgeom_tests/snapsplit13.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, DOUBLE Tolerance :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)) MULTILINESTRING((0 5, 0 0), (0 0, 5 0), (5 0, 10 0, 10 5), (10 5, 10 10, 5 10), (5 10, 0 10, 0 5)) |
Added test/sql_stmt_rtgeom_tests/snapsplit14.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, POINT first geom :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('POINT(0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('POINT(0 0)', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit15.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, POLYGON first geom :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1)) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit16.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, LINESTRING second geom :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('LINESTRING(5 0, 10 5, 5 10, 0 5)', 4326), 0)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('LINESTRING(5 0, 10 5, 5 10, 0 5)', 4326), 0)); (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit17.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, POLYGON second geom :memory: #use in-memory database SELECT AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('POLYGON((5 0, 10 5, 5 10, 0 5, 5 0))', 4326), 0)); 1 # rows (not including the header row) 1 # columns AsText(SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), GeomFromText('POLYGON((5 0, 10 5, 5 10, 0 5, 5 0))', 4326), 0)); (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit2.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, INT LINESTRING :memory: #use in-memory database SELECT SnapAndSplit(1, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(1, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit3.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, DOUBLE LINESTRING :memory: #use in-memory database SELECT SnapAndSplit(1.2, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(1.2, GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit4.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, TEXT LINESTRING :memory: #use in-memory database SELECT SnapAndSplit('line', GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit('line', GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit5.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, invalid BLOB LINESTRING :memory: #use in-memory database SELECT SnapAndSplit(zeroblob(10), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(zeroblob(10), GeomFromText('MULTIPOINT(5 0, 10 5, 5 10, 0 5)', 4326), 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit6.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, NULL MULTIPOINT :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), NULL, 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), NULL, 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit7.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, INT MULTIPOINT :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), 1, 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), 1, 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit8.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, TEXT MULTIPOINT :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), 'multipoint', 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), 'multipoint', 0.1) (NULL) |
Added test/sql_stmt_rtgeom_tests/snapsplit9.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
SnapAndSplit, invalid BLOB MULTIPOINT :memory: #use in-memory database SELECT SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), zeroblob(10), 0.1); 1 # rows (not including the header row) 1 # columns SnapAndSplit(GeomFromText('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)', 4326), zeroblob(10), 0.1) (NULL) |
Changes to test/sql_stmt_tests/Makefile.
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
....
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
|
AS = as AUTOCONF = autoconf AUTOHEADER = autoheader AUTOMAKE = automake-1.15 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -Wall -Wextra -Wunused -pedantic -g -O0 -fprofile-arcs -ftest-coverage -g CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo ................................................................................ linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
....
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
|
AS = as AUTOCONF = autoconf AUTOHEADER = autoheader AUTOMAKE = automake-1.15 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -fprofile-arcs -ftest-coverage -g CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo ................................................................................ linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ linesegavg1.testcase \ linesegavg2.testcase \ linesegavg3.testcase \ linesegavg4.testcase \ linesegavg5.testcase \ linesegavg6.testcase \ linesegavg7.testcase \ linesegavg8.testcase \ linesegavg9.testcase \ linesegmax1.testcase \ linesegmax2.testcase \ linesegmax3.testcase \ linesegmax4.testcase \ linesegmax5.testcase \ linesegmax6.testcase \ linesegmax7.testcase \ linesegmax8.testcase \ linesegmax9.testcase \ linesegmin1.testcase \ linesegmin2.testcase \ linesegmin3.testcase \ linesegmin4.testcase \ linesegmin5.testcase \ linesegmin6.testcase \ linesegmin7.testcase \ linesegmin8.testcase \ linesegmin9.testcase \ linesegmin10.testcase \ linesegmin11.testcase \ linesegmin12.testcase \ linesegmin13.testcase \ linesegmin14.testcase \ linesegmin15.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
Changes to test/sql_stmt_tests/Makefile.am.
1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 |
linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 |
linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ linesegavg1.testcase \ linesegavg2.testcase \ linesegavg3.testcase \ linesegavg4.testcase \ linesegavg5.testcase \ linesegavg6.testcase \ linesegavg7.testcase \ linesegavg8.testcase \ linesegavg9.testcase \ linesegmax1.testcase \ linesegmax2.testcase \ linesegmax3.testcase \ linesegmax4.testcase \ linesegmax5.testcase \ linesegmax6.testcase \ linesegmax7.testcase \ linesegmax8.testcase \ linesegmax9.testcase \ linesegmin1.testcase \ linesegmin2.testcase \ linesegmin3.testcase \ linesegmin4.testcase \ linesegmin5.testcase \ linesegmin6.testcase \ linesegmin7.testcase \ linesegmin8.testcase \ linesegmin9.testcase \ linesegmin10.testcase \ linesegmin11.testcase \ linesegmin12.testcase \ linesegmin13.testcase \ linesegmin14.testcase \ linesegmin15.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
Changes to test/sql_stmt_tests/Makefile.in.
1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 |
linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 |
linesfromrings1.testcase \ linesfromrings2.testcase \ linesfromrings3.testcase \ linesfromrings4.testcase \ linesfromrings5.testcase \ linesfromrings6.testcase \ linesfromrings7.testcase \ linesegavg1.testcase \ linesegavg2.testcase \ linesegavg3.testcase \ linesegavg4.testcase \ linesegavg5.testcase \ linesegavg6.testcase \ linesegavg7.testcase \ linesegavg8.testcase \ linesegavg9.testcase \ linesegmax1.testcase \ linesegmax2.testcase \ linesegmax3.testcase \ linesegmax4.testcase \ linesegmax5.testcase \ linesegmax6.testcase \ linesegmax7.testcase \ linesegmax8.testcase \ linesegmax9.testcase \ linesegmin1.testcase \ linesegmin2.testcase \ linesegmin3.testcase \ linesegmin4.testcase \ linesegmin5.testcase \ linesegmin6.testcase \ linesegmin7.testcase \ linesegmin8.testcase \ linesegmin9.testcase \ linesegmin10.testcase \ linesegmin11.testcase \ linesegmin12.testcase \ linesegmin13.testcase \ linesegmin14.testcase \ linesegmin15.testcase \ link_m.testcase \ locatemeasure10.testcase \ locatemeasure11.testcase \ locatemeasure12.testcase \ locatemeasure13.testcase \ locatemeasure14.testcase \ locatemeasure15.testcase \ |
Added test/sql_stmt_tests/linesegavg1.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - NULL geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(NULL); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(NULL) (NULL) |
Added test/sql_stmt_tests/linesegavg2.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - INT geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(1); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(1) (NULL) |
Added test/sql_stmt_tests/linesegavg3.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - DOUBLE geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(1.5); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(1.5) (NULL) |
Added test/sql_stmt_tests/linesegavg4.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - TEXT geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength('geom'); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength('geom') (NULL) |
Added test/sql_stmt_tests/linesegavg5.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - invalid BLOB geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(zeroblob(10)); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(zeroblob(10)) (NULL) |
Added test/sql_stmt_tests/linesegavg6.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - invalid POINT geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(MakePoint(11, 43, 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(MakePoint(11, 43, 4326)) (NULL) |
Added test/sql_stmt_tests/linesegavg7.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - invalid POLYGON geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegavg8.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - invalid MULTILINESTRING geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegavg9.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringAvgSegmentLength - valid LINESTRING geom :memory: #use in-memory database SELECT ST_LinestringAvgSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringAvgSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)) 2.0 |
Added test/sql_stmt_tests/linesegmax1.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - NULL geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(NULL); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(NULL) (NULL) |
Added test/sql_stmt_tests/linesegmax2.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - INT geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(1); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(1) (NULL) |
Added test/sql_stmt_tests/linesegmax3.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - DOUBLE geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(1.5); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(1.5) (NULL) |
Added test/sql_stmt_tests/linesegmax4.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - TEXT geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength('geom'); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength('geom') (NULL) |
Added test/sql_stmt_tests/linesegmax5.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - invalid BLOB geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(zeroblob(10)); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(zeroblob(10)) (NULL) |
Added test/sql_stmt_tests/linesegmax6.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - invalid POINT geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(MakePoint(11, 43, 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(MakePoint(11, 43, 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmax7.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - invalid POLYGON geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmax8.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - invalid MULTILINESTRING geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmax9.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMaxSegmentLength - valid LINESTRING geom :memory: #use in-memory database SELECT ST_LinestringMaxSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMaxSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)) 3.0 |
Added test/sql_stmt_tests/linesegmin1.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - NULL geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(NULL); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(NULL) (NULL) |
Added test/sql_stmt_tests/linesegmin10.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - NULL ignore-repeated :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), NULL); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), NULL) (NULL) |
Added test/sql_stmt_tests/linesegmin11.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - double ignore-repeated :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), 1.5); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), 1.5) (NULL) |
Added test/sql_stmt_tests/linesegmin12.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - text ignore-repeated :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), 'no'); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), 'no') (NULL) |
Added test/sql_stmt_tests/linesegmin13.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - BLOB ignore-repeated :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), zeroblob(4)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326), zeroblob(4)) (NULL) |
Added test/sql_stmt_tests/linesegmin14.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - ignore-repeated FALSE :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 42, 11 44, 14 44)', 4326), 0); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 42, 11 44, 14 44)', 4326), 0) 0.0 |
Added test/sql_stmt_tests/linesegmin15.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - ignore-repeated TRUE :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 42, 11 44, 14 44)', 4326), 1); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 42, 11 44, 14 44)', 4326), 1) 1.0 |
Added test/sql_stmt_tests/linesegmin2.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - INT geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(1); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(1) (NULL) |
Added test/sql_stmt_tests/linesegmin3.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - DOUBLE geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(1.5); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(1.5) (NULL) |
Added test/sql_stmt_tests/linesegmin4.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - TEXT geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength('geom'); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength('geom') (NULL) |
Added test/sql_stmt_tests/linesegmin5.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - invalid BLOB geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(zeroblob(10)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(zeroblob(10)) (NULL) |
Added test/sql_stmt_tests/linesegmin6.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - invalid POINT geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(MakePoint(11, 43, 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(MakePoint(11, 43, 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmin7.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - invalid POLYGON geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('POLYGON((10 43, 11 43, 11 44, 10 44, 10 43))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmin8.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - invalid MULTILINESTRING geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('MULTILINESTRING((10 42, 11 42), (11 44, 14 44))', 4326)) (NULL) |
Added test/sql_stmt_tests/linesegmin9.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
ST_LinestringMinSegmentLength - valid LINESTRING geom :memory: #use in-memory database SELECT ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)); 1 # rows (not including the header row) 1 # columns ST_LinestringMinSegmentLength(GeomFromText('LINESTRING(10 42, 11 42, 11 44, 14 44)', 4326)) 1.0 |