UDM Progress

Basic UDM functionality up and running:

  • import from PostGIS database
  • data conversion from WKT to Geotools Geometry
  • scene geometry envelope calculation
  • view scaling and translation to extents of envelope
  • interactive zoom/pan with keyboard
  • interactive zoom/pan with mouse (need to disentangle this functionality from the main p5 App class using native Java mouseListener class)

Next steps:

  • clean up architecture of UObject package:  How to handle geometry in UObjects? Should UObjects be able to contain multiple geometries? Should all geometry draw functions be handled through inheritance of standard Geotools geometry objects – i.e. outside of UObjects?
  • Set up graph network layer – to what extent can Geotools classes be used/extended from here?
  • How to handle object display scaling issues with zoom functions?
  • migrate code to github
  • set up online PostGIS database and start testing remote access

UDM Roadmap

This is the preliminary class diagram for the UDM platform. The main goals in my mind in how this should be constructed is to make the structure as flat as possible, while still allowing it to be flexible to future changes and added complexity. This builds off the approach of Processing to create lean coding environments that are easily accessible to designers.

180929_ClassDiagram

As the UDM is envisioned as a pedagogical tool as much as a design tool, its structure is intended as an introduction to basic Object Oriented programming (and design) paradigms. Key principles, such as inheritance, composition, “encapsulating what changes”, etc. are viewed as both as a way to ensure code reuseability and reconfigurability, as well as teaching tool for introducing and developing Object Oriented Design as an urban strategy – i.e. “Object Oriented Urbanism.” A key point of encapsulation includes the state objects, which define object behaviors, and ensure that any behavior can be reused, replaced and/or overlapped.

The UDM will be built with GeoTools library, which provides geometry types and the full functionality of a GIS platform.