Wednesday, December 1, 2010
Thursday, November 18, 2010
If you are considering creating your own channel, please consider tagging the videos with "swgis". On Twitter you can use the #swgis hashtag.
Wednesday, November 17, 2010
Wednesday, November 10, 2010
- iFactor Consulting's (my employer) Web Maps Connector; and
- another company working on OSM to be released soon.
Friday, November 5, 2010
Tuesday, November 2, 2010
We would like to invite all Magik developers to an online live demo presentation of MDT (Magik Development Tools): the new and modern IDE for Magik.
Session is planned to be held on December, the 2nd, 1 p.m. Washington D.C. time.
MDT live demo presents main MDT features from simple basics to most advanced stuff. Topics included in this demo are as follows:
- creating project, runtime, session;
- importing and exporting (preferences, sessions, products etc.);
- working with code;
- browsing through code;
- managing project dependencies;
- version control systems;
duration: approx. 60 min.
Due to limited number of seats please confirm your interest on email@example.com. If needed, we will hold another session 90 minutes after the first one. Joining details and link will be posted one week prior to the presentation.
Thursday, October 28, 2010
Thursday, October 21, 2010
Friday, October 15, 2010
unit_manager.unit(:degree).default_format.use_sub_units? << _false # (or _true)
Thursday, September 23, 2010
In this case, the demo takes open parcel and address information from the Boulder City and Boulder County (Colorado, USA), processes it with FME and writes data into a format that can be uploaded into OpenStreetMap for the world to see.
Wednesday, September 22, 2010
Please mark your calendars.
GE Energy will host a Smallworld Latin America Users Conference November 30-December 1 in São Paulo, Brazil.
The venue will be CENESP (Centro Empresarial de São Paulo) on Avenida Maria Coelho Aguiar 215 - Bloco G, 2nd Floor
v Join fellow customers, channels, third party companies related to our industry, and GE staff.
v Listen to industry presentations, case studies, and product announcements.
v Spend time at the Exhibition to learn about the latest software developments and innovations.
v Network and socialize with colleagues from across the Latin America.
v Simultaneous translations to be provided for Spanish and Portuguese.
Please RSVP to Denise Buciotti Coelho by phone +55 11 3067-8223 or email firstname.lastname@example.org.
Tuesday, September 21, 2010
Wednesday, September 15, 2010
http://walking-papers.org provides a way of printing out your maps onto paper. These paper maps have georeferencing marks on them. You take them out into the field, make your redlining changes and then when you come back into the office, you scan them and then upload the scan. The scanned maps are georeferenced onto the background map and made available for a back-office technician to digitize the data and red-lined attributes into the database.
Seems very simple yet effective. I'm not suggesting that Smallworld customers adopt this approach, but when thinking about mobile solutions I think it is good to understand the broad range of options and learn from them.
Saturday, September 11, 2010
Friday, September 10, 2010
1. You can get a SQL prompt directly at the Magik prompt...
SQL> SELECT name, address1 FROM hotel ORDER BY address1
Name Address 1
Acorn Guest House 154 Chesterton Road
Hamilton Lodge 156 Chesterton Road
De Freville House 166 Chesterton Road
Rosswill 17 Chesterton Road
Cam Guest House 17 Elizabeth Way
Kirkwood House 172 Chesterton Road
All Seasons 219 Chesterton Road
Lyngamore 35 Chesterton Road
Suffolk House 69 Milton Road
Southampton House 7 Elizabeth Way
Ashley Hotel 74 Chesterton Road
Arundel House Chesterton Road
Gonville Hotel Gonville Place
Garden House Granta Place
University Arms Regent Street
15 record(s) selected
SQL> SQL> select count(*) from min_road
1 record(s) selected
NOTE: the sql() procedure is defined in module :sql2. You can load that module if your image doesn't have the sql() procedure loaded.
2. You can also use the sql2_parser object directly in your Magik code.
You can find out more by searching the Smallworld documentation for "SQL Support". To be clear, this is not the same as Smallworld's SQL Server image code. This is strictly related to writing SQL in Magik to query Smallworld tables.
Friday, September 3, 2010
Wednesday, September 1, 2010
Wednesday, August 25, 2010
Most of the time, jumping to a method is faster in the Class Browser than using this code snippet.
But what if you want to jump to the file where the actual class exemplar (not the method) is defined? Then you can do this...
I know of no way to do this latter action from the Class Browser.
Tuesday, August 24, 2010
I will be presenting a section on "Best Practices: Tweaking FME-Magik code to improve your FME experience in Smallworld". It turns out that I have more material to cover than the approximately 30 minutes allotted to me. So in the spirit of conference collaboration, I thought I would put all my proposed topics up for a vote. The topics with the most votes get moved to the top of my presentation list. The ones with the least votes get used as filler at the end :)
Please vote on the topics here http://bit.ly/9nFvkd ( you are also welcome to add your own topics).
See you in Baltimore!
Tuesday, August 17, 2010
_local v << gis_program_manager.cached_dataset(:gis)
See the public comments for ds_version_view.file_usage() for a description of the data that is returned. Based on that, you can figure out what percentage of total blocks used is attributable to a particular alternative.
This can give you guidance for which alternatives to merge/post/delete, etc.
Wednesday, August 4, 2010
- will you be attending?
- what demos you will give at your booth
- if you don't have a booth, say that you will be representing your company anyways and would love to meet with customers (tell them which bar to meet you at)
- presentations you will be doing or are interested in
- thoughts on trends/topics at the conference
Monday, August 2, 2010
This year we are introducing a new session on the agenda that may interest you…it is open to all attendees including customers, partners, and GE staff:
Smallworld and the Big World – Saturday September 11th 2:45-4:30pm, with a 15 minute break at 3:30
After a week of concentrating on products and applications within the Smallworld community, we’d like to shift the focus outside: how we relate to the bigger world.
This session is an open forum to discuss things like:
· visibility (making Smallworld and MapFrame more visible in the geospatial arena)
· standards (OGC and others)
· policy (stimulus, other government actions)
· technology trends (smart phones, neo-geo, social networking)
· organizations (sources of information and influence).
Saturday, July 31, 2010
Lately I have become very interested in the possibilities of integrating data from http://www.openstreetmap.org (aka OSM) with Smallworld. You can find out more about the mission of OSM at http://wiki.openstreetmap.org, but in summary…
“OpenStreetMap creates and provides free geographic data such as street maps to anyone who wants them. The project was started because most maps you think of as free actually have legal or technical restrictions on their use, holding back people from using them in creative, productive, or unexpected ways.” (http://wiki.openstreetmap.org/wiki/Main_Page)
Think of OSM as Wikipedia but on a world-wide geographic database. I am presenting at this year’s Smallworld Americas Users Conference in September a presentation entitled “Let other people maintain your landbase (without having to pay them)”. It will be a discussion of some options available to Smallworld users to get out of the landbase maintenance business. Most of it will be centered around OpenStreetMap and how you can integrate that freely available data as a Smallworld data layer (both raster and vector data). The session will be in the last time slot of the conference on Saturday, so if you are interested in the topic but cannot attend the presentation, please let me know and I will send you the slides.
As an example of OSM data, if you are a utility that has Bakersfield, California, USA in your service area, have a look at this link http://osm.org/go/TY4w8rXaV- This is the OSM data that is available for this area. If you read the attribution on the features in this view, you can see that someone got the data from the City of Bakersfield GIS download site. You don’t get that kind of building detail (even individual trees!) from Bing or Google. Although if you do integrate aerial imagery into Smallworld you could just see the building profiles. But if you are testing the viability of integrating external datasets with your Smallworld environment, you might want to consider OSM. The price is right and the data quality/quantity keeps increasing. The beauty of OSM data is that if you know that some data is missing or incorrect in the map, you can make edits to the database yourself and the changes will be available on the map within an hour or two. That kind of turn-around is not available from most other data vendors. Clearly there are trade-offs between using OSM vs. Bing/Navteq/TeleAtlas but that is what I hope to cover in my presentation.
If anyone has questions about how OSM could be integrated into their Smallworld database, please let me know.
Thursday, July 22, 2010
- Training sessions occur on Wednesday and Thursday (September 8 and 9)
- The opening Cocktail Reception and first Technology Showcase Exhibition is on Thursday night.
- Opening session and workshops start on Friday morning and finish on Saturday afternoon.
- coordinating information technical meetups. (Kind of like an informal unconference)
- provide commentary about workshops. Hopefully if enough other people send tweets, I can find out what is happening in workshops that I am unable to attend
- reach out to new attendees and international guests. The Smallworld Users Conference is a great way to network and get caught up with friends and colleagues from years gone by. Unfortunately, if you are new to the Smallworld community in North America you might find it more difficult to access this great network. Using a well-known channel such as Twitter will allow anyone to post questions/answers related to the conference during the conference.
Friday, July 9, 2010
- in fme_tics_client.private_run(), determine if there are any smallworld_product.applications that might be interested in knowing where the FME-imported geometry bounding box is
- if there are any such applications, then create a dynamic variable geometry_set that fme_tics_client.int!received_feature() can add newly-created geometries to
- back in fme_tics_client.private_run(), send a :goto_request databus message to all the relevant applications with the geometry_set populated in fme_tics_client.int!received_feature()
Thursday, July 8, 2010
Thursday, July 1, 2010
- read Lot lines and lot labels as two separate layers from a single DWG file
- where possible, stitch the lot lines together to make a polygon
- where possible, figure out which lot label is inside each of the newly generated polygons and aggregate those two geometries into one RWO in Smallworld
Thursday, June 24, 2010
Check out this post (http://bit.ly/crW52x) about how Graham at iFactor Consulting has written a Magik interface to the Google Charts API. The possibilities are endless for various kinds of dashboard applications directly in Magik. And I think the charts are also clickable (ie you can drill down on data points). But you might want to ask Graham for more details.
Tuesday, June 8, 2010
Thursday, May 27, 2010
Thursday, May 13, 2010
Monday, May 3, 2010
record_transaction.new_update(proposed_values).run()and the proposed_values are all the same as the existing values for those attributes, the triggers and business rules will still be fired. Because some of the business rules called code that was expensive to run, this added unnecessary time to the whole process.
Please be aware of this whenever you write code with
record_transaction.new_update()and make sure that you only update attributes where the value has actually changed. The record_transaction API will not optimize your proposed_values list for you.
If you compile the following code into your image and then run any “slow” process, you will be notified of all the times a record gets updated with nothing new, causing the business rules to be fired unnecessarily…
_method record_transaction.new_update( record, values, _optional description )
## Creates an instance which specifies the update of a record.
## RECORD - the record to be updated
## VALUES - a property_list keyed on field name.
## The elements of this property_list provide proposed values
## for physical, geometry and simple valued join fields, and
## information for updating multi valued join fields.
## DESCRIPTION - String description on transactions to be used
## for undo messages.
# BEGIN CHANGE
# DO NOT PERMANENTLY PUT THIS INTO PRODUCTION CODE!!!! THIS IS
# FOR DEBUG PURPOSES ONLY.
_local anything_changed? << _false
_for k,v _over values.fast_keys_and_elements()
_if record.perform(k) <> v
anything_changed? << _true
_if _not anything_changed?
write("Nothing changed for: ",record)
# put a traceback in here to figure out which code is calling
# unnecessary new_update()
# END CHANGE
>> _clone.init( :update, _unset, record, values, description )
Tuesday, April 27, 2010
Friday, April 16, 2010
- Imported some Cambridge demo db data (substations, cables, supply points)
- Imported a Google Static Map based on the bounds of the Smallworld data
- Exported to Geospatial PDF format which is readable with Adobe Reader
Tuesday, April 13, 2010
Saturday, April 3, 2010
## proj4_string : string
## returns a string that represents self in the Proj.4 format.
## This can be used by coordinate system converters to convert
## self into other representations.
# according to the comments in
# coordinate_system_mixin.new_proj(): "PROJ_TYPE is a symbol
# specifying the projection type. The naming convention is
# similar, but not identical, to that used in the USGS Proj4
# library. See below for details."
# because the Magik names are not always identical to the Proj4
# names, we provide a lookup table here.
_local projection_name_lookup << hash_table.new_with(:accurate_tmerc,:tmerc,
_local (proj,params) << _self.proj_type_and_params
_local info << rope.new()
_for k,v _over params.fast_keys_and_elements()
_local int_str << internal_text_output_stream.new()
Thursday, April 1, 2010
Wednesday, March 31, 2010
_for a_file _over sw_module_manager.module(_self.module_name).resource_files(:data, _true).fast_elements()
_if a_file.index_of_seq(xml_file_name) _isnt _unset
fn << a_file
... and can be replaced with ...
fn << smallworld_product.get_data_file(xml_file_name,office_upgrade_runner.module_name)
Not only is the latter easier to read than the former,
While this blog is focussed on Smallworld, I would still like to suggest that even the presentations that do not cover Smallworld would provide benefit to Smallworld users because they describe how problems in various industry segments were solved using FME. The Safe folks liked to say "data format is irrelevant" when it comes to FME. I agree heartily and look forward to discovering ways that FME can provide business benefit to customers that store their data in Smallworld.
Tuesday, March 23, 2010
Friday, March 5, 2010
Wednesday, March 3, 2010
My main purpose here this week is to demonstrate the Web Maps Connector (the iFactor Consulting product that lets you view Bing Maps as a dataset in your Smallworld applications). I am fortunate to be hosted by the team from Realworld. You can see my demos at the Realworld booth starting at the reception this evening.
I also have interests in Smallworld/FME integration, visualization techniques, and any cool Magik code my colleague Graham has put together. (If you are a Magik GUI developer and you haven't tried his Dialog Designer you owe it to yourself to see a demo). Please stop by the booth and introduce yourself. I am very excited about being at this conference and look forward to meeting many of you.
Friday, February 12, 2010
|When people talk about||FME calls it||Smallworld calls it|
|US Survey Foot||FOOT||:usfeet|
This is important in two places when setting up your FME mapping files:
- Finding the correct FME coordinate system for the non-Smallworld end of the mapping file
- If a customer tells you that they are giving you data to import into Smallworld and its units is "feet" make sure that you clarify whether it is in International Feet or US Survey Feet.
- Looking at the FME coordinate system browser, I notice that many of the State Plane Coordinate Systems use the US Survey Foot.
- You will need to clarify the same question when a customer asks you to export data from Smallworld. Typically, though, they will ask you for the data in a particular coordinate system and FME will know what units comprise that coordinate system.
- Finding the correct FME coordinate system to match your current Smallworld application coordinate system
- Probably the biggest confusion of feet/usfeet/internationalFeet comes when you are trying to configure an FME coordinate system to match your Smallworld application coordinate system. You need to be absolutely sure that you are using the same "feet" unit in the FME version of the Smallworld application coordinate system.
- Most application coordinate systems use "cm" or "mm" for units so you won't run into this confusion. Even in US installations where units are measured in feet and inches, the application coordinate system and database coordinate systems are often set to metric units. (Remember that what a user sees on the GIS can be set to show Imperial units even if the underlying coordinate systems use metric units).
Wednesday, February 10, 2010
Thursday, February 4, 2010
Core Spatial Technology (GIS)
Smallworld 2.1(3) G
Core Spatial Technology 3.2
Core Spatial Technology 3.2.1
Smallworld Core Spatial Technology 3.3
Smallworld Core Spatial Technology 4
Smallworld Core Spatial Technology 4.1
Smallworld Core Spatial Technology 4.1.1
In addition to this, a conversation I had with Peter Batty recently brought up the fact that he had worked on a version 1.9.6 back in 1992.
Wednesday, February 3, 2010
The kind folks at Realworld Systems have offered me a spot in their booth to demo the iFactor Web Maps Connector product. If you are interested in other iFactor product offerings, I will also be able to demonstrate or discuss them.
Aside from those product-demo goals, if you would like to talk about Smallworld/FME, SmallworldCamp, Visualization, or just introduce yourself, please come find me at the Realworld booth.
And if I have time, I think it would be fun to do some informal code demoing and sharing. Kind of like a mini BarCamp at Smallworld. Please send me a note if you are interested in this kind of informal sharing and we can coordinate a meeting time.
Over the years I have made many contacts in the Smallworld realm in the EMEAI region but have never met them in person. I'm hoping that on this trip I will be able to meet many of you and also make new acquaintances.
See you in March!
Monday, January 18, 2010
Lately I have taken an interest in Visualization techniques within the Smallworld context. I am using the term "Visualization" in the sense of using visual representations to simplify complex data relationships. The term has various other related meanings as well.
In a sense, we work with Visualization techniques in Smallworld every day... we deal with a visualization of geographic relationships between objects that are of interest to us. When you create a report using the Schematics Generator you are using visualization techniques to help you comprehend complex relationships by keeping only the salient information. Any Thematic Mapping tool that you might use also lets you visualize complex data relationships easier.
I have been intrigued by the use of heat maps to provide a way of showing intensity of some attribute spatially. I still haven't got my mind around all the applications that might be used in the utility space for heat maps. Some that come to mind are: heat map of all the transformers that are about to blow up; heat map of all the outages in a storm. While the pictures look cool, I'm trying to better understand what value a heatmap image would bring to GIS users that cannot be already provided by other kinds of thematic mapping applications.
I have a feeling that the full potential for visualizations such as heat maps and density maps has not been realized within the Smallworld realm but I sure could use some ideas from readers about what possible applications might be.
My colleague Graham Garlick has done alot of work with generating heat maps, density maps and TIN density maps within Smallworld and I want to put a plug in for him in this post. If you are interested in knowing more about how to generate these kinds of maps in Smallworld, please contact iFactor Consulting and ask for Graham's heat map demo.
So now to the final point of this post. The visualizations that I have already referred to are typically georeferenced rasters that overlay on a map and give you a sense of the spatial relationships of your data. I have been exploring another area that involves network visualizations.
My first foray into this realm was by making use of a software package called Graphviz to visually show the results of network follower trace results in PNI. This was really helpful in debugging network follower results. Typically, a Magik developer debugs network follower trace results by querying the nf_links of a network follower and trying to understand how they are linked. Using a visualization tool like Graphviz allowed me to easily create a .jpg file that I could view in any image viewer. By looking at the image output, I could easily spot places where the trace stopped unexpectedly or went down an unexpected branch. Sometimes a picture really is worth a thousand words (or a thousand minutes of Magik debugging!!!)
My second attempt at network visualization came from a slightly different tack. If visualization techniques are meant to represent complex interdependencies in an easy-to-understand manner, what is a really complex difficult-to-understand scenario in Smallworld that I could try to visualize? The answer to that question is: XML configuration file dependencies. Anyone that has ever tried to modify config.xml, gui.xml or a host of other XML configuration files in Smallworld will tell you that it can be somewhat mystifying as to which version of the file to change. Any given XML file can inherit from another XML file and its elements can supersede the same elements of a "superclass" XML file. In addition to that, XML files are considered module resource files. That means that they can be placed in customisation products which have a different pathname than the same module found in the core product. If this all sounds confusing, rest assured it is. I have seen many instances (and caused some myself) where I have changed the wrong XML file or changed too many "inheriting" XML files when it would have been more efficient to change a "superclass" XML file. But it was always difficult to get my mind wrapped around the big picture of XML file dependencies. Until now...
I have take a bit of time to write a Magik wrapper around the Graphviz engine. That in itself is not that remarkable and anyone with interest in that could do it. What is of more interest to me is the result that I was able to create with this Graphviz tool showing the interdependencies of XML files. As an example, click here to see the dependencies of the Electric Office config.xml files for applications.
- If you look at the image, you will see information about which XML files inherit from others.
- You will see the full pathname of each file. This will help you know whether to look in the actual module resource file or in a corresponding customization product file
- You will see some cells that are green. These are the cells that represent XML file elements that have a material change relative to a "superclass" file.
- You will see some cells that are red. These are cells that represent XML elements that exist in a configuration file but whose contents are no different than the same element in the inherited XML file. Many times it can be confusing to have the exact same XML element contents in two files, so looking at this visualization gives you an easy-to-understand representation of which duplicate XML elements you can remove.
- You will see some cells that are yellow. These represent XML elements that require further investigation. They indicate that the current XML element is an exact duplicate of another XML element somewhere in the graph. If you notice yellow cells in two XML files that share the same parent, you might want to consider moving those XML elements up the inheritance ladder.
- And finally, just seeing the overall flow of XML inheritance can give you a quick indication of whether you have too many dependencies or maybe where it would make the most sense to insert a suitable XML file "superclass" that would serve your own customizations most efficiently.