Good day,

My name is Cameron Green and I am an honours (4th year) student at the 
University of Pretoria in South Africa. I am currently working on a project 
that requires me to assess the quality of data that was downloaded from 
OpenStreetMap (OSM), specifically, various topological errors. I have decided 
to use PostGIS as it does error checks and tells me what the error is and where 
(or at least that is how I understand it). 

Firstly, here is my installation information (Ubuntu 16.04) with PostgreSQL 10:
POSTGIS="2.4.4 r16526" PGSQL="100" GEOS="3.5.0-CAPI-1.9.0 r4084" SFCGAL="1.2.2" 
PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.3, released 2015/09/16" 
LIBXML="2.9.3" LIBJSON="0.11.99" LIBPROTOBUF="1.2.1" TOPOLOGY RASTER
 
Using the textbook, Mastering PostGIS chapter 8, where it deals with PostGIS 
Topology. Below is the SQL commands I used. When I used SRID as 4026 and 
0,00028 as the snap threshold, the commands execute without any issues. 
However, when I change the SRID to 2049 and decrease the snap tolerance in the 
topology.toTopoGeom, I get the following error: 
 
ERROR: SQL/MM Spatial exception - geometry crosses edge 4469 CONTEXT: PL/pgSQL 
function totopogeom(geometry,topogeometry,double precision) line 114 at FOR 
over SELECT rows PL/pgSQL function totopogeom(geometry,character 
varying,integer,double precision) line 89 at assignment SQL state: XX000
 
The line and type of error changes as I increase the snap tolerance to any 
value between 5m and 100m.

>From my understanding, once the topology is created and the geometries are 
>loaded into the topology, I should be able to run the 
>topology.ValidateTopology function to get a list of errors. Is this correct? 

At the moment it seems like the topology errors is what preventing me from 
creating the topology. 
 
If anyone could please help me or direct me to where I have made an error in my 
SQL commands or there are some settings I must change. Any help regarding this 
would be greatly appreciated.  I have added the commands at the end of this 
email. 
 
Kind regards,
Cameron Green
President - CGIS YouthMappers
BSc(Hons) Geoinformatics, University of Pretoria
+2783 301 3201
+2712 420 2016



SQL Commands:  
topology.CreateTopology ('my_topology', 2049, 5, false) 

// Checked the validity of the input geometries 
select ST_IsValidReason(way) 
from osm_lines
where ST_IsValid(way) = false

// Create the TopoGeometry column 
select topology.AddTopoGeometryColumn('my_topology', 'public', osm_lines, 
'topogeom', 'Linestring')

//  Populate the Topogeometry column from an existing geometry. 
// This is where my problem starts
update osm_lines SET topogeom = topology.toTopoGeom(way,'my_topology',1,5) 

select topology.TopologySummary('my_topology')

select * from  topology.ValidateTopology('my_topology')


-- 
This message and attachments are subject to a disclaimer. Please refer to 

http://www.it.up.ac.za/documentation/governance/disclaimer/ 
<http://www.it.up.ac.za/documentation/governance/disclaimer/> for full 
details.
_______________________________________________
postgis-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to