[postgis-users] Intersection TopologyException

Luís Miguel Royo Pérez luis.miguel.royo at gmail.com
Tue Dec 2 02:45:10 PST 2014


Hi everyone,

I'm trying to perform a quite simple analysis in Postgis, but I'm facing 
a TopologyException where there's no features.

You can find the data I'm using in this link 
<https://mega.co.nz/#%21pFgnCBoA%21zx-Tb78nPGzL7Fcbw7dMheSbIrMfRJjJ9yV1Qv7Wx6o>.

What I try to do is the next:

  * First I want to create a buffer for emt_paradas, and the layer
    valenbisi, and then intersect them, the result I will call
    "intersect_1".

|     select  st_intersection(buf_emt.st_union,buf_valenbisi.st_union)
     from
     (SELECT  ST_union(st_buffer(emt_paradas.geom, 200)) FROM emt_paradas )as buf_emt,
     (SELECT  ST_union(st_buffer(valenbisi.geom, 200)) FROM valenbisi )as buf_valenbisi|

  * Second, I want to create a buffer for carril_bici, and intersect
    with "intersect_1". The result I will call "intersect_2".

|     select  st_intersection(buf_carril_bici.st_union,inter_emt_valenbisi.st_intersection)
     from
     (select  st_intersection(buf_emt.st_union,buf_valenbisi.st_union)
     from
     (SELECT  ST_union(st_buffer(emt_paradas.geom, 200)) FROM emt_paradas )as buf_emt,
     (SELECT  ST_union(st_buffer(valenbisi.geom, 200)) FROM valenbisi )as buf_valenbisi) as intersect_1|

  * Third, I want to create a buffer for layer ocio and make a
    difference with "intersect_2". The result I will call: "diff_1".

|     select  st_difference(intersec_2.st_intersection, buf_ocio.st_union)
     from
     (select  st_intersection(buf_carril_bici.st_union,inter_emt_valenbisi.st_intersection)
     from
     (select  st_intersection(buf_emt.st_union,buf_valenbisi.st_union)
     from
     (SELECT  ST_union(st_buffer(emt_paradas.geom, 200)) FROM emt_paradas )as buf_emt,
     (SELECT  ST_union(st_buffer(valenbisi.geom, 200)) FROM valenbisi )as buf_valenbisi) as inter_emt_valenbisi,
     (SELECT  ST_union(st_buffer(carril_bici.geom, 200)) FROM carril_bici )as buf_carril_bici) as intersectionEMT_valenbisi_carrilBici,
     (SELECT  ST_union(st_buffer(ocio.geom, 250)) FROM ocio )as buf_ocio|

  * Finnaly I want to intersect "diff_1" with layer mapa_ruido_dia,
    ideally where the field gridcode equals one or two.

|     select 1 as id, st_intersection(diff_1.st_difference, mapa_ruido_dia.geom)
     from
     (select  st_difference(intersectionEMT_valenbisi_carrilBici.st_intersection, buf_ocio.st_union)
     from
     (select  st_intersection(buf_carril_bici.st_union,inter_emt_valenbisi.st_intersection)
     from
     (select  st_intersection(buf_emt.st_union,buf_valenbisi.st_union)
     from
     (SELECT  ST_union(st_buffer(emt_paradas.geom, 200)) FROM emt_paradas )as buf_emt,
     (SELECT  ST_union(st_buffer(valenbisi.geom, 200)) FROM valenbisi )as buf_valenbisi) as inter_emt_valenbisi,
     (SELECT  ST_union(st_buffer(carril_bici.geom, 200)) FROM carril_bici )as buf_carril_bici) as intersectionEMT_valenbisi_carrilBici,
     (SELECT  ST_union(st_buffer(ocio.geom, 250)) FROM ocio )as buf_ocio)as diff_1, mapa_ruido_dia
      where mapa_ruido_dia.gridcode='1' or mapa_ruido_dia.gridcode='2'

|

Is in this last one query when Postgis show me the TopologyException

|> Error performing intersection: TopologyException: Input geom 1 is
> invalid: Self-intersection at or near point 723120.23091093975
> 4379700.195452339 at 723120.23091093975 4379700.195452339


Any ideas? Thank you very much!|

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20141202/1a33f7bc/attachment.html>


More information about the postgis-users mailing list