Holochain Forum

OpenStreet Map

This thread is a continuation of a discussion and exploration of how to run OpenStreetMap datasets, map tiles and 3rd party geospatial APIs on Holochain.

The original thread: https://chat.holochain.org/appsup/channels/osm

Key Comments from the original thread:

  • DuckDuckGo has decided to ditch OSM for Apple Maps thus further entrenching the geo data silos: https://spreadprivacy.com/duckduckgo-apple-mapkit-js/

  • I think this is a very interesting challenge for P2P and the commons, at the same level as trying to regain control over social media data and networks. How do you evolve OpenStreetMap for Holochain such that the data sources, geospatial APIs, and end-user UI+UX are superior to Google Maps and Apple Maps?

  • A couple of figures from my recent work in civil engineering research - the parameter represented by color is Vs30, a parameter used in earthquake engineering that is roughly correlated with geology. Our project starts with a crude model based on some limited information (a geology map, for example) and then performs Bayesian updating at a categorical level, then applies geostatistics - “bending” the model locally to agree better with the data.

  • I’d like to see (contribute to?) a tool where grassroots orgs can deploy a poll that incorporates spatial location features, so poll respondents can opt to include info about where they live. (This could be “smeared” in the user’s device before submitting poll result, by adding a random vector generated from a sensible distribution—this would allow polls of a certain size to produce statistically meaningful results without revealing the address of any single poll respondent, preserving privacy). The resulting data can be used to produce e.g. a “heat map.”

  • This might be useful for example in allowing city council to target areas for improvement (sidewalks, public spaces, potholes etc) with trustworthy direct and transparent input from local citizens.

  • With enough participation, responses could be interpreted in a statistically meaningful way.

  • Devil is in the details, of course—need to “roll out” tools like this slowly, with adequate attention paid to the concerns of citizens re: privacy. In the distant future, presumably, HC apps will have become a dominant paradigm and be as trustworthy as say email and online banking. In the short term, we need to dedicate lots of effort to public outreach, Q&A sessions, technical assistance, door to door promotion/“PR” as an ongoing civic undertaking…

  • Lots of other applications of course but for whatever reason my mind keeps coming back to these ideas about polling, more direct ways of collecting & collating citizen desires for use at a local level.

  • As I mentioned to Nathan above our chat here, I’m currently working on a Yelp/Seamless happ. A portion of the feature of this App allows users to view locations of businesses in a Map, as well as allowing users to enter New Business data into the “database” (if you will).

  • While looking into some of the Map solutions on the market, we’ve decided that Google Maps is the best choice for us, as far as the level user-experience we’re trying to provide. But their pricing model is just ridiculous for the long term. So we’re looking into ways of how to best store/distribute this data so that in the future we can easily migrate the Map features over to a “Holochain” solution when that becomes available (hopefully).

  • And I completely agree with your earlier philosophy of not taking on the goliath head on, and instead chip away at it from the edges.

  • I don’t have any interested in taking on this challenge of creating a decentralized maps. But I do wish someone with proficient level of map knowledge to helps us understand how Map technologies are created from the ground up, so that while we’re creating these hApps, what can we do, from the data level, to start contributing towards having a HoloMaps

  • Ideas like yours, of adding obfuscated vector data to create heat map to help target locations for improvement are great

  • I just personally don’t have any level of knowledge in that area. And not know where to start. If we were to gather this “vector” data. What does it look like?

  • Any collection of geographic data is going to look like (one or more of) points, lines/paths, polygons.

  • Points are a single location identified as an ordered pair (latitutude, longitude).
  • Lines / paths are typically a set of points in some order. This is necessary to store (for example) the route you take when driving from one place to another, or the location of a river, street, border/boundary etc.
  • A polygon is a path that is closed i.e. the start and end point are the same. Polygons can denote areas, such as a city, state, neighborhood etc.

What I meant by “vector” in the above (sorry—unnecessarily complocated word choice) is just an ordered pair. For example, a location on a map can be represented as a 2-dimensional vector (x,y) or (latitude, longitude). Our location can be represented by a single vector. A second “obfuscation” vector can be added to the location vector to help obscure a precise location and protect identity. Example: Say a user’s house is at (41.8211 degrees North, 84.6234 degrees West). I want the application to honor users’ privacy, so I tell it to “hide” the true location as follows: (1) Pick a random angle from zero degrees to 360 degrees. (2) Pick a random distance from zero to 1500 metres. (3) Start at the user’s house. Turn towards the bearing from #1. Move the number of metres from #2. (4) Save this new location and submit it to the hApp community. This ensures that a user can enter a location but it won’t be shared with the rest of the world. Anyone who uses the app can see the public data (including the locations submitted by users), but they know that every point has been intentionally relocated by some unknown distance, <= 1500 metres in any direction.

The app can obtain the lat & lon coordinates from my street address using a public API such Google Maps or Apple Maps or OpenStreetMap. No need for us to reinvent that wheel. A good simple hApp can simply handle the data of interest to it (in your case, the locations of businesses) and ignore the rest of the world. The application “output” would be a collated collection of physical locatiosn and associated metadata. This can be saved as any well-known standardized format, such as the .kmz and .kml (“keyhole markup language”) file formats, which Google Earth and many other tools can read.

My mention of “obfuscation vectors” was specific to my own example. Of course this kind of thing would be completely silly in your case—what good is a directory of business locations if they are only telling you the business is less than 1.5 km away!

Too much information here probably but hope this helps.

If anyone is interested, I made a little demo for storing points of interest in a holochain DHT at https://github.com/vanarchist/holochain-point-of-interest. The UI uses leaflet and openstreetmap. Individual points can be added by clicking on a map location and all of the saved points can be retrieved. It uses a bucketset from holochain-collections that is indexed on the first character of the lat/lng geohash. Therefore, there are 32 buckets to help alleviate DHT hotspots. Possible future work could include switching to a better geospatial indexing method such as S2 and adding geospatial search functions.

vanarchist/holochain-point-of-interest

Holochain demo for saving and loading points of interest on a map interface - vanarchist/holochain-point-of-interest

Wow, this definitely resonates with me, thanks @pauldaoust very much for adding me! I am building a nextgen game/platform teaching people how to live in harmony with each other and the planet. The smartphone version is a geolocation game with AR similar to Pokémon Go but much more evolved. It is being built on top of holochain and uses a 3D map. So we would def be interested in collaborating with you guys on how to share a global db of places on the holochain networks… Our World is also an ecosystem where other smaller satellite apps/games can plug into it and share the central profile/avatar so It acts like a container too. You progress in the game by gaining karma for doing good, you can gain karma for many reasons and the satellite apps/games can add karma to your profile using the OASIS API I am building now. I am currently just finishing off the HoloNET Lib and HoloUnity Lib so holochain can talk to .NET and Unity. The game is written in Unity. I will be gifting forward the HoloNET and HoloUnity Libs to the community hoping it will attract people to help build Our World, its a VERY BIG project! Its a very important project and will help save the world so is a very noble cause!

We do not want to use any of the Big Tech such as Google, their agenda is very dark and much darker than people think… this is why Holochain is very important, it will replace them all one day… I have seen the future, I see very far into the future, that is where I downloaded Our World from!

3 Likes