Sarah, thanks, I created an issue at
https://github.com/osmcode/pyosmium/issues/47

Does this mean I cannot even use the existing node cache file when
processing ways from the minute diff files from pyosmium?

On Mon, Aug 21, 2017 at 4:44 PM, Sarah Hoffmann <lon...@denofr.de> wrote:

> On Sun, Aug 20, 2017 at 11:08:03PM -0400, Yuri Astrakhan wrote:
> > Sarah, how would I set the node cache file to the repserv.apply_diffs()?
> > The idx param is passed to the apply_file() - for the initial PBF dump
> > parsing, but I don't see any place to pass it for the subsequent diff
> > processing.  I assume there must be a way to run .apply_diff() that will
> > download the minute diff file, update node cache file with the changed
> > nodes, and afterwards call my way handler with the updated way
> geometries.
>
> I don't think that is possible yet. For my own projects I have always
> used an explicit instance of the node cache file and read and written
> that manually (using the osmium.index.LocationTable() class). But that
> is not particularly practical. I'll look into adding an idx parameter
> to the replication mechanism when I find a minute. Feel free to open
> a feature request on github to remind me.
>
> Kind regards
>
> Sarah
>
> >
> > Also, I assume you meant dense_file_array, not dense_file_cache. So in my
> > case I would use one of these idx values when calculating way centroid,
> and
> > None otherwise:
> > sparse_mem_array
> > dense_mmap_array
> > sparse_file_array,my_cache_file
> > dense_file_array,my_cache_file
> >
> > Thanks!
> >
> >
> > On Mon, Aug 14, 2017 at 4:31 PM, Sarah Hoffmann <lon...@denofr.de>
> wrote:
> >
> > > On Mon, Aug 14, 2017 at 11:10:39AM -0400, Yuri Astrakhan wrote:
> > > > mmd, the centroids are calculated with this code, let me know if
> there
> > > is a
> > > > better way, I wasn't aware of any issues with the minute data
> updates.
> > > >       wkb = wkbfab.create_linestring(obj)
> > > >       point = loads(wkb, hex=True).representative_point()
> > > > https://github.com/nyurik/osm2rdf/blob/master/osm2rdf.py#L250
> > >
> > > It doesn't look like you have any location cache included when
> > > processing updates, so that's unlikely to work.
> > >
> > > Minutely updates don't have the full node location information.
> > > If a way gets updated, you only get the new list of node ids.
> > > If the nodes have not changed themselves, they are not available
> > > with the update.
> > >
> > > If you need location information, you need to keep a persistent
> > > node cache in a file (idx=dense_file_cache,file.nodecache)
> > > and use that in your updates as well. It needs to be updated
> > > with the fresh node locations from the minutely change files
> > > and it is used to fill the coordinates for the ways.
> > >
> > > Once you have the node cache, you can get the geometries for
> > > updates ways. This is still only half the truth. If a node in
> > > a way is moved around, then this will naturally change the
> > > geometry of the way, but the minutely change file will have
> > > no indication that the way changed. Normally, these changes are
> > > relatively small and for some applications it is good enough
> > > to ignore them (Nominatim, the search engine, does so, for example).
> > > If you need to catch that case, then you also need to keep a
> > > persistent reverse index of which node is part of which way
> > > and for each changed node, update the ways it belongs to.
> > > There is currently no support for this in libosmium/pyosmium.
> > > So you would need to implement this yourself somehow.
> > >
> > > Kind regards
> > >
> > > Sarah
> > >
> > > >
> > > > Your query is correct, and you are right that (in theory) there
> shouldn't
> > > > be any ways without the center point. But there has been a number of
> ways
> > > > with only 1 point, causing a parsing error "need at least two points
> for
> > > > linestring". I will need to add some special handling for that
> > > > (suggestions?).
> > > >
> > > > You can see the error by adding this line:
> > > >    OPTIONAL { ?osmId osmm:loc:error ?err . }
> > > > The whole query --  http://tinyurl.com/ydf4qd62  (you can create
> short
> > > urls
> > > > with a button on the left side)
> > > >
> > > > On Mon, Aug 14, 2017 at 5:18 AM, mmd <mmd....@gmail.com> wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > Am 13.08.2017 um 19:49 schrieb Yuri Astrakhan:
> > > > >
> > > > > > * all ways now store "osmm:loc" with centroid coordinates,
> making it
> > > > > > possible to crudely filter ways by location
> > > > >
> > > > > out of curiosity, can you say a few words on how your overall
> approach
> > > > > to calculate centroids for ways? As we all know it's an endless
> pain to
> > > > > get that information out of minutely diffs :)
> > > > >
> > > > > I have to say that I'm pretty much unfamiliar with SPARQL and just
> > > tried
> > > > > the following query. My expectation was that I won't get any
> results,
> > > > > making me wonder if my query has some issue?
> > > > >
> > > > > SELECT * WHERE {
> > > > >   ?osmId osmm:type 'w' .
> > > > >   FILTER NOT EXISTS { ?osmId osmm:loc ?osmLoc }.
> > > > > } LIMIT 100
> > > > >
> > > > >
> > > > > BTW: A quick search on Github yielded the following:
> > > > > https://github.com/nyurik/osm2rdf. Would that be the right place
> to
> > > look
> > > > > for more details?
> > > > >
> > > > > Best,
> > > > > mmd
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > talk mailing list
> > > > > talk@openstreetmap.org
> > > > > https://lists.openstreetmap.org/listinfo/talk
> > > > >
> > >
> > > > _______________________________________________
> > > > talk mailing list
> > > > talk@openstreetmap.org
> > > > https://lists.openstreetmap.org/listinfo/talk
> > >
> > >
>
_______________________________________________
talk mailing list
talk@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk

Reply via email to