streetcomplete / StreetComplete

Easy to use OpenStreetMap editor for Android
https://streetcomplete.app
GNU General Public License v3.0
3.9k stars 356 forks source link

add functionality to show satellite map #56

Open escoand opened 7 years ago

escoand commented 7 years ago

This feature would be very helpful for the roof shapes.

westnordost commented 7 years ago

Hmm, if you can see the roof shape from satellite, you could also do it from JOSM, wouldn't you?

On the technical side, I am not entirely sure if this is possible, but if it is, then it involves making the background of the Tangram-Es map invisible and showing the bing map behind it.

escoand commented 7 years ago

Yes of course but with this argument there is not much left for this app.

westnordost commented 7 years ago

Yes, that'd be okay though. If it can be done more comfortably using JOSM, it should be.

Anyway, I will not close it, it is just very low priority for me.

rugk commented 7 years ago

You did not close it yet. I'll agree on the low-prio, only a nice-to-have feature, but could be implemented by contributors or so.

escoand commented 7 years ago

I'm not very experienced with JOSM but more comfortable than this 2-3 touchs approach is hard to imagine.

I really like StreetComplete for this ease of use. I don't know any other more comfortable OSM app. Super Arbeit!

lightonflux commented 7 years ago

I need to say it is even important for getting the number of floors. In some areas not all house shapes are correct. So a satellite image helps to see if someone tagged the wooden carport as part of the house. By the shape of the roof you can make out the shape of the house and tag the floors.

TimMagee commented 5 years ago

As I discussed in my ill-fated duplicate of this issue, satellite imagery can also be very helpful for orienting one's self on the map. Many quests can be hard to locate due to scarce map data, but satellite imagery would make them significantly easier to find.

rugk commented 5 years ago

Many quests can be hard to locate due to scarce map data

That does not speak for the map style… However, I have to agree… It's sometimes very difficult, especially when your compass is a little wrong and so you cannot even rely on the orientation.

However, this can also be fixed. (IMHO it would already help to show the points of what the each (any) quest is actually about, …)

waldyrious commented 5 years ago

… It's sometimes very difficult, especially when your compass is a little wrong and so you cannot even rely on the orientation.

The difficulty is also added to by the fact that the GPS position updates in jumps, which makes any surveying other than at a walking pace (e.g. as a passenger in a car or bus) quite hard.

rugk commented 5 years ago

Welll… that behavior of GPS is normal or a problem of your device. In cars speed or so I can see the GPS position quite well…

However, coming back to the maps issue… We have identified some problems, so may someone want to summarize (/list) it & open a new issue at https://github.com/ENT8R/streetcomplete-mapstyle or so?

waldyrious commented 5 years ago

I've added a comment to an issue there that I believe would be ameliorated with satellite view (but also improved map style): https://github.com/ENT8R/streetcomplete-mapstyle/issues/65#issuecomment-470497556

matkoniecz commented 5 years ago

On the technical side, I am not entirely sure if this is possible, but if it is, then it involves making the background of the Tangram-Es map invisible and showing the bing map behind it.

looking at https://github.com/ENT8R/streetcomplete-mapstyle/blob/master/streetcomplete-satellite-style.yaml it should be possible to to it with an additional map style.

I tried to find out usage rules for Mapbox-hosted layer and failed, but I am betting that you must use Mapbox software, with Mapbox tracking enabled to (and probably also pay). Maybe it would be possible to use Bing aerial data here?

https://raw.githubusercontent.com/osmlab/editor-layer-index/gh-pages/sources/world/Bing.geojson list ELI entry for Bing, but somehow without URL format.

JOSm apparently has its own separate list that is also missing format - see https://josm.openstreetmap.de/wiki/Maps/Worldwide#Bingaerialimagery

matkoniecz commented 5 years ago

I just managed to get raster tiles to work in StreetComplete, caching also worked.

I tested with non-satellite raster, now I will try to hunt down satellite map that will also work and has global coverage (Bing is promising but seems to have weird tile indexing).

Proof of concept is at https://github.com/westnordost/StreetComplete/commit/6b2085f07d75399a5586d33188ff42ab1c81987b

EDIT: And now I have a satellite/aerial view!

sources:
  raster:
    type: Raster
    url: https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}
layers:
  raster:
    data: { source: raster }
    draw:
       raster:
          order: 0
matkoniecz commented 5 years ago

@westnordost So now I am ready to make PR fixing this (after finishing/getting closer to finishing with one of open ones).

I assume that single satellite/aerial map with global coverage is preferable over using full blown parser of https://github.com/osmlab/editor-layer-index that will generate map style with the best layer in a given area (as it would be hilariously complex without matching big benefit).

I am tempted ti just go with Esri - but at the very least I need to check license (it is included in JOSM but...). Maybe Bing is feasible.

westnordost commented 5 years ago

Proof of concept is at 6b2085f

Weird, did you commit that into this repository? How is this possible?

matkoniecz commented 5 years ago

Weird, did you commit that into this repository? How is this possible?

My branch is not listed at https://github.com/westnordost/StreetComplete/branches/all so I am guessing that it is contained to my fork repository and GitHub is showing this poorly.

Looking at git logs on command line confirms this.

matkoniecz commented 5 years ago

@westnordost Can you add also https://github.com/ENT8R/streetcomplete-mapstyle/pull/73 to the SC repo? This way I would be able to start adding ability to use satellite/aerial without fragile/convoluted merges.

EDIT: done

matkoniecz commented 5 years ago

Main question is how UX should be implemented. Currently map style is bundled with dark/light mode.


Current options are:

Auto Light Dark System default


I am planning to split this setting in two and have:

(1) Night mode with the same settings as now:

Auto Light Dark System default

(2) And map style settings:

Map Satellite (Esri)

Map style would follow UI style as it is doing now.


Optionally, have in settings checkbox "replace map by Esri aerial view"


(note, full attribution would still be added somewhere - see https://github.com/esri/esri-leaflet#terms - so maybe do not credit/blame Esri for aerial quality directly in settings?)

westnordost commented 5 years ago

Esri would simply best appear in the lower right corner, along with Openstreetmap contributors? Or maybe "Aerial (by Esri)" in the settings is enough?

matkoniecz commented 5 years ago

If you display an ArcGIS Online service in any Leaflet application, we require that you include Esri attribution and recognize data providers.

is in https://github.com/esri/esri-leaflet#terms

But I researched a bit more and found https://www.arcgis.com/home/item.html?id=8e90a00a0a6845a49262e0b756f57a10

The following use cases are permitted for the World Imagery basemap: (...) Sharing Data with Open Data Sites: Building on the use cases above, Esri and its imagery contributors grant Users the non-exclusive right to use the World Imagery map to trace features and validate edits in the creation of vector data. Users that create vector data from the World Imagery map can publicly share that vector data through a GIS data clearinghouse of their own or through another open data site. Public sharing can also be achieved through ArcGIS Open Data or the OpenStreetMap (OSM) Initiative. For ArcGIS users that want to contribute such vector data to OSM, Esri provides applications and services directly accessible from ArcGIS platform. Users acknowledge that any vector data contributed to OSM is then governed by and released under the OpenStreetMap License (e.g. ODbL).

That has no attribution requirements whatsoever and certainly is without explicit requirement to list all involved organizations.

In JOSM there is solely tiny "Terms & Feedback" linking to https://wiki.openstreetmap.org/wiki/Esri

So

"Aerial (by Esri)" in the settings is enough

seems to be correct

matkoniecz commented 5 years ago

What about mentioning aerial in changeset source field?

This is a thing that may be either "nice to have" (in that case I will probably skip it, at least initially) or "really should be done" (in such case I will include in the PR from start).

westnordost commented 5 years ago

Hmm right, the issue might be that people start answering quests based on assumptions from (blurry) aerial imagery. For example "This looks like asphalt", without being on site. On the other hand, there is the warning if he is not really on-site. So it should be okay. The aerial source should not be mentioned because the information should not be drawn from there.

rugk commented 5 years ago

Exactly, we already prevent users from answering if they try to answer quests too far away. We cannot protect against all pitfalls anyway. (and even if they use aerial image, it is at least better than just guessing and not using it :thinking:)

This needs to be seen in practice, but if I think about it, I personally may really use the image if I could use it today. When looking into a nearby street for the surface quest, I would possibly indeed double-check on the image that also the end of the road does not have a different surface. (I guess that is a thing you should see :thinking:)

Generally, I'd say so, at least for asphalt – finding this out from an aerial image is not a bad method.

westnordost commented 5 years ago

Depends on the resolution. I brought up this example because often you cannot distinguish asphalt from certain types of sett from aerial imagery.

TimMagee commented 3 years ago

I notice that this issue is marked as fixed. Yet, I cannot figure out how to use satellite imagery in StreetComplete.

Do I need to build StreetComplete myself with a special configuration option to use this?

Is there an advanced setting I need to set to enable this?

Am I missing something?

I have tried the F-Droid build, the Github build, and the Google Play build on multiple phones with various versions of Android and I have hunted through the settings and menus. So, if this feature is enabled, it only works on a small subset of devices or I am really bad at finding things.

matkoniecz commented 3 years ago

@TimMagee It is not your fault at all! This feature is not yet available despite being partially implemented.

I was supposed to finish it to add offline support (see especially #2794) but it has not happened yet.

Helium314 commented 2 years ago

Should this issue be opened again? Satellite / aerial images still cannot be selected, and the current implementation is broken/crashing (you can try by manually editing shared preferences file)

dbdean commented 2 years ago

It would be very helpful to have satellite/aerial imagery now we have the ability to add addresses and shops to the map. If buildings aren't already mapped, it can be hard to work out where to put the nodes.

mnalis commented 2 years ago

If buildings aren't already mapped, it can be hard to work out where to put the nodes.

Ummm, why do you think so @dbdean ? When on the ground, you're in the perfect position to put nodes at exactly the right location where it would be most useful as a node - at the entrance to that shop or house. App knows where you are (due to GPS) even without any map being shown, so it is enough that you get close to the entrance.

if buildings are mapped as polygons... The more problematic IMHO is if buildings **are** mapped as polygons, as adding nodes to map does not (AFAIK) do snap-to-building-outline (which would be the most useful way to map, as otherwise any map aligning by other mappers usually results in nodes ending up being shown on the wrong side of the road/footway, disassociated from building etc)

However, if aerial background is implemented, and user enables it, we should add appropriate tags to the changeset (i.e. imagery_used=*).

We might also consider removing source=survey from such changesets, as it becomes much more likely that StreetComplete would not actually be used on-site (even with our dismissable warnings...) (related: https://github.com/streetcomplete/StreetComplete/discussions/4017, https://github.com/streetcomplete/StreetComplete/issues/3137)

westnordost commented 2 years ago

The GPS position can be somewhat off in street canyons (e.g. apartment blocks on both sides) due to reflections.

The more problematic IMHO is if buildings are mapped as polygons, as adding nodes to map does not (AFAIK) do snap-to-building-outline (which would be the most useful way to map, as otherwise any map aligning by other mappers usually results in nodes ending up being shown on the wrong side of the road/footway, disassociated from building etc)

You can tap on the building to assign it a housenumber.

dbdean commented 2 years ago

The example I had today was that I was sitting in a cafe and I could see about 4-6 businesses across the street, but no buildings were mapped. Other than the one directly across from me, I couldn't really judge how along the surrounding businesses were.

I ended up adding them using OSMAnd with imagery visible, because the locations of the POIs were obvious from the visible buildings in the aerial imagery.

mnalis commented 2 years ago

The GPS position can be somewhat off in street canyons (e.g. apartment blocks on both sides) due to reflections.

That is true. But the aerial and satellite maps have offsets too; that's why for more accurate positioning one has to use Imagery Offset Database if available for that imagery and for that microlocation; or use other, more complicated calibration methods if IOD is not available there. Unfortunately, many mappers do not use those calibrations/offsets (nor take into consideration picture angles which makes base of the buildings removed from the their roofs, sometimes for over 30%) but instead use aerial/satellite imagery as provided, so some positional error will creep in either way.

I personally do not find that a huge problem - even if the amenity I'm looking for is say 20m away from it proper location, I'd still likely to be able to find without much problems (as you note, data consumer who will try to find the amenity will also be using the GPS, so in street-canyons-gps-error situation even if amenity is perfectly mapped with precision geodesic equipment, the final user will have the equally hard time finding it).

You can tap on the building to assign it a housenumber.

Yes, one can do that only for simple detached houses (where one building has one housenumber), but not for many apartments (where one building has multiple entrances with multiple housenumbers, at least over here). But that was an aside, not a big issue, and probably not easily solved in SC (I can use EveryDoor to handle that, or leave notes)

The example I had today was that I was sitting in a cafe and I could see about 4-6 businesses across the street, but no buildings were mapped. Other than the one directly across from me, I couldn't really judge how along the surrounding businesses were.

Ah, that use case (sitting at a cafe and being bored while waiting for someone for example) I can understand you'd lose some precision; but I would guess that such is very tiny minority of mapping situation for most users? I was thinking more of that when you are a pedestrian, you can stand up and walk to those amenities and map them without problem when standing in front of them. And in such case you'll actually see a sign saying if they're out of business or similar, and solve other quests related to them which you couldn't do while sitting on the other side of the street (like opening hours, cards acceptance, smoking allowed, etc.)

westnordost commented 2 years ago

But that was an aside, not a big issue, and probably not easily solved in SC (I can use EveryDoor to handle that, or leave notes)

What would you do in EveryDoor to handle that?

mnalis commented 2 years ago

What would you do in EveryDoor to handle that?

I think it does that automagically if you click close enough to the building outline inEntrances mode by "snapping to wall" at upload time; see for example https://github.com/Zverik/every_door/issues/62

As another alternative approach, SCEE has Insert node into way functionality on long-press, which allows one to explicitly select a way and a position on it where they want to insert a node (and its tags). I actually prefer that one, as I see final result immediately (and may choose to correct or undo it before uploading)

Katzenstreu commented 1 year ago

This feature (showing some tiles with satellite images) would be also really helpful to enter house numbers or other things we can see from far. I don't enter private ground. But sometimes I don't know which building on the map it is. With the satellite image I could allocate the drawn buildings. Sometimes they aren't drawn correctly or some buildings or parts are missing.

Best regards Tim

d4f5409d commented 1 year ago

Hmm, if you can see the roof shape from satellite, you could also do it from JOSM, wouldn't you?

On the technical side, I am not entirely sure if this is possible, but if it is, then it involves making the background of the Tangram-Es map invisible and showing the bing map behind it.

It would be good, because if we want to upload adresses where there are no buildings in OSM, you can add the address very accurately. This would help us to "address" 😅 these issues and allows us to work even when we are far away from our computers, where JOSMs oftem belong 😄

mnalis commented 7 months ago

To note: SCEE (StreetComplete "Expert Edition" fork) does already include option to switch between aerial imagery+overlayed vectors and just regular vectors display (including ability to enter any custom TMS URL), so perhaps some of that could be re-used if it were to be included in StreetComplete.

Also, interested people can go try it out to see how well it would actually work for them in practice rather in theory, and leave feedback about what they miss and how it might be made better.


However I still see two big challenges when trying to offer that functionality to target StreetComplete audience:


On a personal experience note, for myself it turned out to be very rarely useful in practice (coming from JOSM world, I acutely miss at least user-alignment, customizable transparency, and single-click switch), so I rarely actually choose to use it.

It does become useful where I'm in totally unmapped areas (e.g. not even buildings mapped, much less any small street-furniture-alike POIs; or areas which really are empty in the real world too) which also happens to have either:

But for me, that happens to be quite rare combination to encounter in real life in my little part of the Europe. I certainly do not find use for it in more than 0.1% of my SCEE mapping, and even there, I would more often leave a note with picture and approximate location instead, and then use several different imageries and aligning techniques to add it properly at home in JOSM.

YMMV, of course!

westnordost commented 7 months ago

Interesting insight, thank you for that.

tordans commented 7 months ago

To reference from https://github.com/streetcomplete/StreetComplete/issues/5543#issuecomment-2011384209

(westnordost:) … That having said, nothing speaks against implementing being able to choose aerial imagery as background map in StreetComplete. It just has to be done by someone. I believe there is an open ticket for that around somewhere. (In case you or someone else feels this is a good motivation to work on it right now, please post your intention first in that ticket, because there are a few things to consider before starting with that task I will write about then.)

tordans commented 7 months ago

A quick experience report: I did a walk using the Buildings Overlay today in a rural area of Germany where buildings are well mapped but not perfect. I found myself switching to GoMap in order to orient myself on the aerial imagery. If there where a way to change the background for a quick glance at a different base layer, I would have done so and it would have made my mapping session with SC easier. My main issue in this case was, that I had to spent more time orienting myself than I wanted to and was still not sure that I was changing the right building. It was possible without arial imagery … but at a cost of attention, which I wanted to spend on the group I was walking with, not SC :-).

(I did not think to test SCEE in this case…)

westnordost commented 7 months ago

Are addresses not displayed while thebuilding overlay is active?

contrapunctus-1 commented 1 week ago

Pinging because I've been watching this issue for a while and it's a recurring thorn in my side.

StreetComplete would be the perfect app for me to introduce to new mappers at mapping parties (self-explanatory and game-like quests, easy creation of photo notes, team mode, automatic upload without the need to type out changeset comments)...were it not for the lack of satellite imagery.

Most of India is undermapped (many areas only have major roads traced - not even buildings), so the absence of satellite imagery makes it difficult for beginners to determine the exact position of POIs, even if I help them out by tracing buildings and roads in advance.

(Besides, for many beginners, the app I introduce may end up being the only app they'll use for a while once the mapping party ends - so they may not always have well-traced buildings to orient themselves. SC should show satellite imagery to help them continue to add POIs accurately.)

Similarly, dense apartment buildings are the norm in Indian cities, which makes GPS unreliable. Here too, aerial imagery would help with orientation.

SCEE requires way too many configuration steps to display satellite imagery, in addition to being a more complicated app in general. That makes it unsuitable for beginners. It's SC that should show imagery (overlaid with vector data) - by default.

doniks commented 1 week ago

I agree satellite imagery in SC would be awesome.

(Going a bit off topic . Sorry) @contrapunctus-1 I also think SC is the best app to introduce people to mapping. Amazingly simple, gamified, fun, almost zero learning effort. Once mappers reach the limits of SC, maybe you could consider introducing them to Every Door app. It's also quite simple to learn, and slightly more advanced mapping tasks are possible /more comfortable in ED than in SC. And ED can show aerial images