Coder Social home page Coder Social logo

josm-bag-quick's People

Contributors

nlthijs48 avatar

Watchers

 avatar  avatar

josm-bag-quick's Issues

Create a .joz file with test cases

Collect interesting test cases in empty OSM+BAG layers, save a .joz file and commit that to the repository.
Makes it easy to test the tool after changes, and ideally it can later be converted to automated unit tests.

Improve history entries of a building create/update

Currently it create a few separate entries because some actions depend on previous ones already being committed in the DataSet. This means pressing CTRL+Z after doing an update will rollback only partially, and you need to press it multiple times to undo it fully, which is really annoying.

Approaches to explore:

  1. Try to run all actions at once, solving the dependency issues
    • Probably impossible for the DuplicateNode fixing pass
  2. Somehow try to merge later command to an existing history entry

Warn about buildings with note:BAG tag

Would be good to first show a popup with the note in that tag and let the user confirm that they want to continue anyway.

List of note-related tags to probably warn about:

  • note
  • note:bag
  • fixme

Create a logo in SVG

Create a logo to use on the github page and in JOSM.

Maybe also suitable or inspiration for the cursor icon the tool itself uses.

In build.gradle in the josm > manifest section add iconPath = "path/to/my/icon.svg"

Improve handling of buildings that are still under construction

  • If building=construction in OSM:
    1. Ask if the building should be upgraded to 'not under construction'
    2. Use the value of the contruction tag as the new value of the building tag
    3. Is the building tag value from BAG more specific? Use that (after implementing #16 this should be automatic)
  • If the BAG building is under construction:
    1. Ask the user if it should be updated anyway (I believe the rule is that construction should have started in real life)
    2. Check how under construction building are represented in the BAG layer

Support removing demolished buildings

  • Check how demolished buildings show up on the BAG layer, probably just absent
  • When the user clicks a building for which there is not BAG building, ask if the building should be removed because it is demolished
    • Ideally do a HTTP request to the BAG api to check the building status, instead of relying on the knowledge of the user. Offering a link to the BAG viewer might be a good first step. Using https://bagviewer.kadaster.nl/lvbag/bag-viewer/#?searchQuery={ref:bag value} seems to work nicely.

Improve results when other ways are connected to the building (like driveways)

For example if there is a connected driveway, the target way will have an extra node where that driveway connects. This node won't be present in the BAG data, and therefore the current algorithm will try to remove it. That means the driveway gets disconnected though.

Options to solve this:

  1. Leave it disconnected and warn the user that it needs to be fixed
    • Might be good enough as a first version, but ideally do something better later
  2. Keep the node at the original location, and splice it into the new geometry
    • Might be hard to determine the correct location in the list of nodes
    • Might cause a weird bulge in the building
  3. Snap the node to the closest edge of the new building geometry and connect it again
    • The driveway might still cross the building after this operation, in that case ask the user.

Example cases

Building with an entrance=* node

Will disconnect the entrance node, it should put it back into the way.

Driveway before:

Begin

Driveway after::

Na 1-click update

Upgrade `building` tag to be more specific if available in BAG

When updating a building, upgrade the building tag to be more specific if better specified in BAG. For example when OSM has building=yes and BAG has building=house, apply building=house. But when the other way around, preserve the value in OSM that is already more specific.

Extract node pairing algorithms to a separate class

Probably best to:

  • Create a node pairing interface
  • Implement the interface for the AssignmentProblem usage (slow algorithm)
  • Implement the interface for the quick algorithm
  • Use the new classes in UpdateBuilding

This would move a bunch of code out of UpdateBuilding, and make the pairing algorithm selection nicer

Warn about buildings that have `building:part`s

The building:parts might need updates as well, so warning the user about their presence gives them a chance to check if everything is still working as expected.

This could be represented in the data in 2 ways:

  1. building:part ways that are fully inside the outer building=* (often connected to nodes of the main building, but that is not a guarantee)
  2. Connected by a building:relation

Add address node update support

When using the tool on a building, it should update the address points as well.
Probably only add new points, and update tags of existing points. Don't move existing points, because probably they have a better location in OSM than BAG.

Double-check that all address points are inside the building.

Deal multiple OSM ways with the same `ref:bag`

Currently it will import the BAG way as a new building in this case, which is incorrect.

Just warn about this issue and fatally stop the update? Instruct the user to first solve the duplicate ref:bag (possibly by simply removing both buildings, remembering additional tags on them)

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.