Anyway, I'm now replicating 18 hours of diffs to the planet (with a
st_within index on it - so any invalid geoms will be cought), for the moment
2 hours replicated fine. I will look at the process (all the logs are saved)
- if everything goes will till Monday we can be sure that the problem is
solved. Tipically we get 100-150 invalid geoms per day.

K.

2011/4/9 Jochen Topf <joc...@remote.org>

> You can have several nodes on the same position which could also lead to a
> broken geometry but will not be caught be looking just at the nodes.
>
> Jochen
>
> On Sat, Apr 09, 2011 at 02:22:58PM +0400, Kirill Bestoujev wrote:
> > Date: Sat, 9 Apr 2011 14:22:58 +0400
> > From: Kirill Bestoujev <bestou...@gmail.com>
> > To: osmosis-dev@openstreetmap.org
> > Subject: Re: [osmosis-dev] one node ways
> >
> > And in works!
> >
> > and (select count(1) from (select n.geom as geom, count(1) as node_count
> > from way_nodes wn join nodes n on n.id = wn.node_id where wn.way_id =
> > w.idgroup by 1) n_group) > 1
> >
> > added to the request below works fine!
> >
> > I will look at it for a couple of days to make sure it works in all
> cases,
> > but looks like it is a solution.
> >
> > What is the process of merging it into osmosis distro?
> >
> > The pg_snapshot and pg_simple load scripts   should also be updated!
> >
> > Kirill
> >
> > 2011/4/9 Kirill Bestoujev <bestou...@gmail.com>
> >
> > > Sure, I know this. But if I create an indes with, for example, a
> st_within
> > > condition, than osmosis falls already while replicating diffs...
> > >
> > > That's why I want to solve the problem in osmosis itself, not in the
> db.
> > >
> > > Yesterday on Russian irc channel we found a solution to add to
> NodeDao.java
> > > linesting update sql-command the following line:
> > >
> > > and (select count(1) from (select n.geom as geom, count(1) as
> node_count
> > > from way_nodes wn join nodes n on n.id = wn.node_id where wn.way_id =
> w.idgroup by 1) n_group) > 1
> > >
> > > This solves the problem with ways having only duplicate nodes in them.
> > >
> > > But the recompiled version of osmosis falls on the following command:
> > >
> > > org.springframework.jdbc.
> > > UncategorizedSQLException: PreparedStatementCallback; uncategorized
> > > SQLException for SQL [UPDATE ways w SET linestring = ( SELECT
> > > MakeLine(c.geom) AS way_line FROM ( SELECT n.geom AS geom FROM nodes n
> INNER
> > > JOIN way_nodes wn ON n.id = wn.node_id WHERE (wn.way_id = w.id) and
> > > array_length(nodes, 1) > 1 ORDER BY wn.sequence_id ) c ) WHERE w.id  =
> ?];
> > > SQL state [XX000]; error code [0]; ERROR: Exception in LWGEOM2GEOS;
> nested
> > > exception is org.postgresql.util.PSQLException: ERROR: Exception in
> > > LWGEOM2GEOS
> > >
> > > the added code - and array_length(nodes, 1) > 1 - which I thought was
> > > solving the problem does not work OR there is an other problem - not
> one
> > > node ways.
> > >
> > > Kirill
> > >
> > >
> > > 2011/4/9 Jochen Topf <joc...@remote.org>
> > >
> > >> Hi!
> > >>
> > >> This has worked for me: I use the ST_isvalid() function in Postgis to
> find
> > >> out
> > >> if a geometry is valid. If not, I either delete the way or set the
> > >> geometry to
> > >> NULL and then do all further processing only on ways with geometry !=
> > >> NULL.
> > >>
> > >> Jochen
> > >>
> > >> On Fri, Apr 08, 2011 at 08:55:43PM +0400, Kirill Bestoujev wrote:
> > >> > Date: Fri, 8 Apr 2011 20:55:43 +0400
> > >> > From: Kirill Bestoujev <bestou...@gmail.com>
> > >> > To: Igor Podolskiy <igor.podols...@vwi-stuttgart.de>
> > >> > Cc: osmosis-dev <osmosis-dev@openstreetmap.org>
> > >> > Subject: Re: [osmosis-dev] one node ways
> > >> >
> > >> > Igor,
> > >> >
> > >> > the context is simple - we have a mirror of the planet, we update if
> > >> with
> > >> > replication with minute diffs.
> > >> >
> > >> > You may have a look at way 35966868 to see the problem by yourself.
> > >> After
> > >> > creation of geom by osmosis it looks like LINESTRING(2.2321042
> > >> > 48.7767191,2.2321042 48.7767191) which is not good.
> > >> >
> > >> >
> > >> >
> > >> > K.
> > >> >
> > >> > 2011/4/8 Igor Podolskiy <igor.podols...@vwi-stuttgart.de>
> > >> >
> > >> > > Hi Kirill,
> > >> > >
> > >> > >
> > >> > >  When a one node way is present in the database and osmosis
> creates a
> > >> > >> linestring geometry for it the resulting geometry is something
> like
> > >> > >> LINESTRING(139.386972 37.095865)
> > >> > >>
> > >> > >> When we process this linestring with any postgis function it
> gives us
> > >> > >> an error - the linestring must contain 0 or > 1 nodes.
> > >> > >>
> > >> > >
> > >> > > I think I understand the problem but I'm having a hard time
> > >> understanding
> > >> > > the context :) Could you maybe provide a simple example and/or a
> > >> > > step-by-step guide to reproduce this? Like the osmosis command
> line
> > >> you're
> > >> > > using, the kind of data you're trying to put in the database -
> that
> > >> would be
> > >> > > very helpful.
> > >> > >
> > >> > > Regards
> > >> > > Igor
> > >> > >
> > >>
> > >> > _______________________________________________
> > >> > osmosis-dev mailing list
> > >> > osmosis-dev@openstreetmap.org
> > >> > http://lists.openstreetmap.org/listinfo/osmosis-dev
> > >>
> > >>
> > >> --
> > >> Jochen Topf  joc...@remote.org  
> > >> http://www.remote.org/jochen/+49-721-388298
> > >>
> > >>
> > >
>
> > _______________________________________________
> > osmosis-dev mailing list
> > osmosis-dev@openstreetmap.org
> > http://lists.openstreetmap.org/listinfo/osmosis-dev
>
>
> --
> Jochen Topf  joc...@remote.org  http://www.remote.org/jochen/ +49-721-388298
>
>
_______________________________________________
osmosis-dev mailing list
osmosis-dev@openstreetmap.org
http://lists.openstreetmap.org/listinfo/osmosis-dev

Reply via email to