News
COOPGIS: COOPGIS 0.5.1 Released
COOPGIS 0.5.1 has replaced version 0.5 in the files area. There are significant improvements in the update process, Inventory Collection module, and the beginning of a Road Editor, among many other changes and bug fixes.
COOPGIS: New Census Edge Data Available
We installed the new data files and it is definitely more accurate than the older data. Power lines that appeared on the wrong sides of some roads are now appearing on the correct side and most roads in general look better. A few edges seem to have gaps (possibly from the import to PostGIS) though it looks like it should not take long to fix up using QuantumGIS.
All Lines is the file you are looking for if you want roads, rivers, and railroads. It is only available at the county level, so you have to select your state and county. After downloading, I used the following command to load into PostGIS:
shp2pgsql -W "Latin1" -I -s 4326 tl_... public.tigeredge | psql -d coopgis
Where tl_... represents the name of the shape file in the current directory (without extensions).
I am working on updating PostGIS to perform all road calculations from this layer. Those changes will be available with the 0.6 version, planned for 12/2009.
The Shape files are available from http://www.census.gov/geo/www/tiger/
COOPGIS: COOPGIS Offline Use
COOPGIS was designed with one of its initial goals being usable while not connected to a network. This was accomplished in the following ways:
Every computer that runs COOPGIS has a complete copy of the COOPGIS database served by PostGreSQL. The entire web application stack is installed on each computer. This is done in Virtual Machines for users that utilize Windows based laptops and can be installed in a Virtual Machine or directly on the computer for Ubuntu Linux based users.
Each time a user makes a change to the GIS (GPSing a feature, creating a Staker Work Order, changing a conductor, etc), a command is generated and applied to their computer, with an Indicator to flag it as not residing on the server.
When users return to the office, they run an update process which sends their new commands to the server, applies the changes, and downloads the latest version of the COOPGIS database and code. The update process typically takes 5-15 minutes or so unless a user has many days of modifications that need to be applied to the server. The number of changes on the Server side do not make an update process take any longer [speeds also vary based on how fast the client laptop is].
Commands are transferred to the Server utilizing FTP (individual commands are .CSV formatted lines defined in the command.py model file). The server performs a pg_dump of the database which the laptop loads automatically. Mercurial is utilized to transfer changed files from the server back to each client computer.
Areas in which the update process could be improved include utilizing a non-static http setup for Mercurial and speeding up the processing of Commands (rebuilding Symbology only when needed for each point should speed things up somewhat). Testing should also be performed to ensure the process is robust if multiple users update at the same time.
Overall, the update process in its current form has been fairly stable for use in a low volume office. Users are able to Stake in the field directly to the GIS without any network connectivity.
COOPGIS: Dynamic Map Web Forms
Recently a draw polygon feature was added to COOPGIS. To do so elegantly required using a form that a user could click on to create the points of the polygon. The below are some snippets that should help explain how to do so.
Simplified Django Model, with GeoModelAdmin.
@class StakerQuickGeneratePolygon(models.Model):
Polygon=models.PolygonField(db_column='the_geom', verbose_name=('polygon'), srid=djangoproject.settings.COOPGISSRID, null=True, blank=True)
objects=models.GeoManager()
class Meta:
app_label='djangoproject'
class StakerQuickGeneratePolygonAdmin(admin.GeoModelAdmin):
list_filter=('polygon',)
list_display=('object', 'polygon')@
Build a dynamic form using the Django dynamic form snippet. Code to setup the widget and build the form included:
geoAdmin=StakerQuickGeneratePolygonAdmin(StakerQuickGeneratePolygon, admin.site)
PolygonFormField=StakerQuickGeneratePolygon._meta.get_field('Polygon')
PolygonWidget=geoAdmin.get_map_widget(PolygonFormField)
Dict['Polygon']=forms.CharField(widget=PolygonWidget())
To process the form I used the line:
polygon=fromstr(form.data['Polygon'])
From there, it was just using Django Python code to update the polygon, get a list of features within it, and otherwise return information to the user.
This polygon feature is used to more quickly make additions to a Staker Work Order in a defined area and should be available in the version of COOPGIS planned to be released around the end of the year.
COOPGIS: COOPGIS 0.5 Released
The 0.5 version includes many enhancements to Staker, including Staker Recipes. For example, add an A1X to a B1 to get a C1.
Some other enhancements include:
Start of a Management Console
Staker Custom Ordering of Stations
Bluetooth Configuration Applet (no editing text files required for Linux clients)
Contract Pricing Module
Better Back Span Support in Staker (better default ordering of Stations)
Pole Treatment Module and Reports
Refactoring of Assembly Editor, Circuit Analaysis and other modules
Many minor feature additions and bug fixes
For 0.6, the plan is to continue to focus on Staker enhancements, a LandMark Editor, and to complete the refactoring of some original code (such as the Inventory Collection View). Version 0.6 will be released in early 2010 if all goes to plan. Feel free to post questions and comments in the forum.
Also available in: Atom