Coder Social home page Coder Social logo

ghini.tour's Introduction

ghini.tour

Garden audio guide and geographic tour.

idea

The ghini.tour app offers visitors something functionally similar to the audio guides offered at the entrance of most modern musea.

The guide offers a detailed map of the garden on which a visitor can see their precise position, and spoken text associated to spots in the garden, and that's about it.

There is only one ghini.tour; each guide is just a ghini.tour configuration: visitors download a configuration from the ghini.tour configuration menu, use it during their visit, and may choose to remove it after they leave the garden.

configuring and installing

As a garden administrators willing to provide a ghini.tour of your garden, you need to:

  • Make sure that openstreetmap precisely and accurately describes your garden,
  • Write an introduction text for your garden,
  • Provide a set of points of interest (POIs) for your garden, each with its own text description, in as many languages as you think appropriate,
  • Apart from the openstreetmap edits, send the data to me, so I can include it in our data repository.
  • Some financial support would be welcome: hosting your data costs me money.

Garden visitors only need to:

  • Install the free and ads-free ghini.tour from google play,
  • Start ghini.tour,
  • Select and download the garden among the available tours,

Although we talk about gardens and botany, the guides you can use with ghini.tour are not at all limited to botanic gardens.

keeping track of tours

We haven't decided yet, but I wish to

  • Let ghini.tour download POIs, texts and audio from ghini.me,
  • Have tour texts on weblate, with one configuration marked as the "source" and then translations to whatever other languages we desire,
  • The server at ghini.me would be producing the audio files automatically, (probably not: the quality of automatic TTS is maybe good enough for personal use, but not really for a tour.)

explaining tasks

Among the tasks of the garden administrator we mentioned some that are not so obvious and for which an explanation is in order. Please consider the following options.

providing a map

  1. OpenStreetMap.org: edit http://osm.org until it accurately describes your garden.
  2. GeoTIFF: georeference a topographic map of your garden: for those who can't physically visit your garden, this provides all necessary information in order to editing osm.org.
  3. provide a topographic map of your garden, and ask us to georeference it (it should contain a geographic grid): this results in a rather precise GeoTIFF.
  4. provide a realistic map of your garden, and ask us to warp it: this results in a possibly usable GeoTIFF and works best if you are able to collect and provide GPS traces.

I think that providing a topographic map of your garden is the option that best balances difficulties and guarantees the best result.

adding POI in the garden

Let's first of all assume you already know what you want to say, and where. That is, you know that in a specific spot of your garden you want to have a specific panel, or maybe you even already have it physically, and you want to send me its digital version.

Give each panel a unique number, so we can identify it by this number.

The best thing you could do to reduce costs downstream, it would be to save each panel in its own plain text file, calling it as the panel number, and give it a txt extension. Bitter experience has demonstrated that Windows and Mac, but in particular Mac, do not make this task easy at all, and if you do manage to save things as I'm suggesting, they will save files without making clear which encoding you're using, causing even more trouble downstream, so if you don't feel comfortable with vi nor emacs, please just write all your panels in one office document and leave to others the task of splitting and saving them properly.

Translate each panel to as many languages as you need, and keep the translations separated. If you do use text files, just keep each version in its own directory. If you're putting all panels in one office document, call the document as the language.

Now to the task of pin-pointing the spots in the garden. We also have several options, and they are all equally viable.

  1. Do it on paper:
    • using a realistic map of your garden, put a dot for each panel, and clearly number it.
  2. Use openstreetmap and produce a spreadsheet:
    • open http://osm.org in a desktop browser and navigate to your garden.
    • Zoom in as far as possible.
    • Now for each of your panels
      • right click on the spot where you want to place the virtual panel, and choose show address.
      • This activates a side pane on your screen, with the precise coordinates of your intended location.
      • Select, Copy, then Paste in the spreadsheet.
    • The spreadsheet you produce should contain as many rows as there are panels, and at least the two columns: one with the panel identifier, one with both coordinates as copied from openstreetmap.
    • You can also separate latitude and longitude if you wish, it won't do harm I guess.
  3. Use QGIS and produce a spatialite database (for us downstream it is just as practical as the spreadsheet):
    • open your garden project in QGIS,
    • add either OSM or your own GeoTIFF layer,
    • create a spatialite layer:
      • choose type Point,
      • add a text column for the panel title,
      • and one for the panel content.
    • Now please enter each panel as a feature:
      • click on the panel location, a dialog will show, requiring you to enter the point id, the panel title, the panel content.
      • Repeat for each panel.
    • The result of all this is the spatialite database to which you added the Point layer.

exporting your plants to ghini.web

This has little to do with ghini.tour but it's closely related to the above, because it's also about writing into ghini.web, it's the d2w flow in the data stream overview.

The part still related to ghini.tour is where you specify the geographic coordinates of your garden, and the preferred zoom level for centering in the map. This isn't (yet) information you can insert in the ghini.desktop database. I should open an issue for this.

Anyhow, this is still completely manual, and it amounts to producing a javascript file that you can execute on the ghini.web server, which would write your data into the ghini.web mongodb database.

I suppose we could do this with a simple mako report, but I've never given it a concrete thought, yet.

The second step, where you import this script in the ghini.web mongodb database, could happen directly from ghini.desktop, or via the mail to the administrator of the ghini.web site.

technical notes (mostly to myself)

connect to the phone adb -d shell or emulator adb shell

connect to the POI database:

sqlite3 /data/data/me.ghini.tour/databases/poi.db

initial GPS position for screenshots:

7.59237;-80.9624

ghini.tour's People

Contributors

mfrasca avatar weblate avatar comradekingu avatar xendez avatar szlajozs avatar santossi avatar shynekomaid avatar pralinor avatar trendspotter avatar nathanbnm avatar rezaalmanda avatar wtuemura avatar

Stargazers

 avatar GutiMoreno avatar  avatar

Watchers

 avatar James Cloos avatar

ghini.tour's Issues

move to GPS location

We let users moving around on the map, I think we need an option to let them move back to the current GPS location.

refresh list of POIs (per garden) from server

in the 'about' window (which we have not yet programmed) you see a list of gardens, each presented with its name, the amount of downloaded panels, the amount of available panels, and a checkbox hinting the user at updating the downloaded panels.

in a way, each garden can be seen as a podcast channel. in this optics, where there are newer episodes, you may want to update. the interface would look something like this, where the refresh (⟳) checkbox is present only if updating makes sense.

garden name panels
el cuchubo 0/21
tanager 12/12
león ambiental 10/12
parque centenario 9/9

anyway, in order to split this from issue #3, let's start with the 'about' window showing the list of gardens and the amount of panels (no total, no refresh).

recentre on chosen location

once the program has locations with a default centre and zoom level, it makes sense to let the user go back to the default view for the chosen location.
this implies we know that a location is the chosen location, we know which is its centre and preferred zoom, and since we're there, we can make sure we know which POIs belong to it and that they get loaded into the app.

clear old tiles

it would be nice to have something similar to the "mappero" tiles management: user zooms in an area, then chooses to either:

  • download tiles for that area, at the chosen zoom levels (overwriting if existing)
  • delete the tiles for that area, at the chosen zoom levels

generally takes time.

zoom to world

not sure how relevant this might be, but maybe we do want to let users go back to the initial default centre and zoom, what we call "world".

reactivate at same zoom position

remember, Android has a very smart way to address multitasking: per default tasks in the background get swapped away and get started back again when requested to the foreground.
in practice, programs are forcibly stopped and restarted.
to get back to where we were, we need use that bundle object that we can fill when we are stopped and that we are handled back when we are restarted.
so we should include in the bundle:

  • zoom level
  • centre of the map
  • active garden (if any)
  • active panel (if any)
  • what am I forgetting?

add locations next to POIs

From @mfrasca on February 15, 2018 14:22

POIs belong to locations and become visible at very deep zoom.
but how do you know where to find locations?
so I think we should add a location table, each location has coordinates and a zoom (to select the initial view), POIs must mention the location they belong to.

  • while no location is selected:
    • all locations should be visible at any zoom (#7)
  • when a location is selected,
    • its zoom level and centre point are activated (#5) ✔️
    • its POIs are loaded into the app (#5) ✔️
    • POIs are visible at zoom 17 or deeper, (#7) ✔️
    • locations are hidden at zoom 17 or deeper, (#7) ✔️
    • all this information is in the asset database (initially hard coded, in perspective #3)
    • all this information can be downloaded from the central ghini.web server (#3)

Copied from original issue: Ghini/ghini.tour-audiowand_version#8

review reaction to onZoom

is it called onZoom, or onZoomEnd, or whatever it is called... anyway: make sure that when a zoom-pan action ends, we review which markers should be visible and which hidden, I'm not so sure it works correctly as it is now, and I'm sure it's not at all ready for the two layers locations/POIs.

review what is shown in lower status line

'BottomLine' contains a text and three buttons.
visibility of buttons and content of text depends on selection and choices.

you can select a garden icon, or a panel icon.

text shows title of selected item;
buttons correspond to type of selected item;

for gardens, there is a difference between selecting and choosing. selected has a shallower meaning. chosen means that the user has entered the garden, so the selection becomes sticky.

zoom to selected garden:→ mark the garden as chosen.

zoom to world:→ select the chosen garden, if any, or select nothing.

zoom back to chosen location:→ select the chosen garden; this is only possible if a garden was ever chosen.

nothing selected:→ no button active or visible, text shows chosen garden title, or nothing.
garden selected:→ play&stop invisible; choose garden visible, text shows selected garden title.
panel selected:→ play&stop visible; choose garden invisible, text shows selected panel title.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.