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]>: > 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] > 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
