Thank you Rémi,

I think I have mixed up some issues. I thought the error was produced by the problematic layer, but is mapa_ruido_dia the problem, it's a completly mess :(

I have tried to clean the layer, but I don't know how exactly should I proceed.

Can anyone lead me in this task with some links or tips?

Thank you!!



On 12/02/2014 11:49 AM, Rémi Cura wrote:
Hey,
some common answer about precision issue :


1. : offset your coordinate to gain in precision :
723120.23091093975 4379700.195452339 -> 120.23091093975XXX , 700.195452339XXXX
2. snap to grid you input data

3. check that your input geoms are valid : st_isvalid : st_makevalid()

Cheers,
Rémi-C

2014-12-02 11:45 GMT+01:00 Luís Miguel Royo Pérez <[email protected] <mailto:[email protected]>>:

    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!|


    _______________________________________________
    postgis-users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users




_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to