Tuesday, July 30, 2013

The Style Name Map and Style Definition Id in GTViewer 14



Overview

GTViewer has supported a feature call Style Name Maps since version 9 (circa August 2010).  This feature is a fairly significant addition to GTViewer, but it has not been promoted much since it was introduced.  With the Style Name Maps, the GTViewer element format was upgraded to include a 32 bit integer value to store a Style Definition Id.  If a Style Definition Id is not provided for an element, the element format will appear unchanged and is still compatible with versions of GTViewer prior to version 9.  However, with this new feature you can define a Style Definition Id on an element which is mapped to a Style Definition for a given Zoom Level range via the Style Name Map.   Thus, the element’s Style Definition no longer must be bound to its Filter Id.  This subtle change turns out to be a major shift in the way GTViewer data can be created. 

The Style Name Map feature has been largely ignored over the last few years for several reasons.  First, changing the element format is a fairly major change to GTViewer.  Since the element format support has been available for a while now, adding Style Definition Ids to your data will not cause problems with older versions of GTViewer (but the new functionality won’t be supported either).   Second, support for the Style Name Map was not available in a .GTX extract file.  Third, it has taken a while for the GTData tools and the FME Writer Plugin to catch up, and there has not been a good way to create data using the Style Definition Id without manually generating your data with the GTData Objects.  

With Version 14 of GTViewer, all of these problems have been addressed.   The Style Name Maps are now fully supported in both the GTM and GTX files.   Style Name Maps have also been enhanced to map Style Names directly to Style Definitions or to an Abstract Name which is then mapped to a set of zoom level threshold ranges mapped to a style definition.  GTData tools such as GTIndex, GTPack, and GTExtract have been updated to support Style Name Maps, and the FME Writer Plugin has also been enhanced to not only support the Style Definition Id, but to also provide a new mode for generating Filter Files that are decoupled from the Style Definition File (something not possible with previous versions of the plugin).

The Style Name Map
The Style Name Map is a text file that defines how a Style Definition Id (defined on the GTViewer element) is mapped to a Style Definition defined in the Style Definition File (usually called style.def).   The Style Definition contains a set of properties (color, weight, linestyle, size, justification, etc.)  that define how an element appears when it is rendered in GTViewer and has traditionally been used with the Style Map File (usually called Style.map).  The Style Map File maps a Category and Filter Id to a Style Definition Name; whereas, the Style Name Map File maps the Style Definition Id on the individual element to a Style Definition Name.
The Style Name Map File contains two sections.  The first section, called Id To Name, maps a Style Definition Id number to an Abstract Style Name.  This section’s entries are in the following format: 



     [Style Definition Id] = [Abstract Style Name]

Both the Style Definition Id and Abstract Style Name must be unique for all entries.
The second section, called Name to Style, is optional.  If it is not defined in the Name to Style section, an Abstract Style Name will be mapped to a Style Definition of the same name.  However, you can map an Abstract Style Name to one or more entries of the following format:



       [Abstract Style Name] = [Style Definition Name]
or
       [Abstract Style Name] = [Style Definition Name]|[min threshold]|[max threshold]
 


Here, the Abstract Style Name is mapped to a Style Definition Name.  If the min and max threshold values are not provided, they will default to 0 (not used).
The following example shows a Style Name Map:

StyleNameMap.map

[Id To Name]
1=STREETS - A21
2=STREETS - A51
3=STREETS - A63
4=STREETS - A31
5=STREETS - A15
6=STREETS - A35
7=STREETS - A25

[Name To Style]
STREETS - A15=Main Road - CLose|0|100
STREETS - A15=Main Road - Far|100|0

STREETS - A21=Main Road - CLose|0|100
STREETS - A21=Main Road - Far|100|0

Here the Id to Name section maps Style Definition Ids 1 to 7 to Abstract Style Names.  In this example, the ids are mapped to different classifications of road types (A21, A51, etc.).  Here only, Streets – A15 and Streets – A21 are defined in the Name to Style section because they are the only ones that have different style definitions used for different Zoom Level Ranges.   The rest of the Abstract Style Names just default to a Style Definition of the same name.  The Style Definition File (style.def) for this Style Name Map would look like this:
                                                                                                                          
Style.Def

[Style Definitions]

[STREETS - A21]
ColorValue=100|100|100

[STREETS - A51]
ColorValue=100|100|100

[STREETS - A63]
ColorValue=100|100|100

[STREETS - A31]
ColorValue=100|100|100

[STREETS - A15]
ColorValue=100|100|100

[STREETS - A35]
ColorValue=100|100|100

[STREETS - A25]
ColorValue=100|100|100

[Main Road - Close]
ColorValue=255|0|0
Weight=5

[Main Road - Far]
ColorValue=0|0|255
Weight=3
Style=2

All of the lesser roads are just styled as gray lines while the Major Roads (A21 and A15) are styled as dashed blue lines when zoomed out far and solid red lines when zoomed in close.  The following screenshots show the difference.


Far Out:



Close In:


The Category definition for the Roads in the GTM file looks like the following:


[Category 2]
Name=Category 2
IndexFile=test_2.gtn
graphicsFile=test_2.gtg
Filter=test_2.flt
StyleNameMap=StyleNameMap.map
DisplayStatus=0
MinDisplayThreshold=0
MaxDisplayThreshold=0
SelectFlag=0
DataId=1


The General Info section would still contain the entries to define the Style Definition File and the Style Map File (no different than before):

StyleDefinitionFile=Style.def
StyleMapFile=Style.map

The Style Map File just contains a header entry to make it a valid file (no mappings are provided):
  
Style.Map

[Style Map]

# FilterMap|min|max|category|filterIdLow|filterIdHigh|Style|



One question that you may have is:  Why are the Style.def and Style.map files defined in the General Info section while the Style Name Map is defined in the Category section?   This is because each Category can have its own Style Name Map, or they can share a Style Name Map with other categories.  If more than one Category section specifies the same Style Name Map File, they will share it.   All of the Style Name Maps will use the Style Definitions in the Style Definition File. 



Attribute Info Dialog

The Style Name Map and Style Definition Id are both displayed in the Attribute Info Dialog on the Element tab:

Major Road - Far Out


Major Road - Close In

Style Map versus Style Name Map

The Style Map and Style Definitions have been supported by GTViewer since version 1.1.   They are used by all current conversion tools including those for G/Technology, Smallworld, Oracle Spatial, and Millsoft.  The FME Writer Plugin also uses them extensively.

The Style Map is a very powerful tool for assigning symbology to elements.  By mapping the Filter Id to a Style Definition, it allows you to defer specifying the actual Style Definition properties until after the data is converted, and you can change styles without reconverting the data.   Before the Style Map was supported, each element had to have its style explicitly defined at conversion, and the style could not be changed without changing the element (or reconverting the data).  While this method sounds primitive, it does work quiet well for Microstation and AutoCad data or any data whose styles are Instance Based and cannot be easily generalized.   The Style Map also has to ability to map Filter Ids to a Style Definition based on a Zoom Level Range, so you can specify different symbology for the same element at different zoom levels (also something that Instance Based symbology can’t do).

The Filter Id, which is required on all GTViewer elements, is used to control the display of elements in the view.  The Filter Files map the Filter Id to a user-friendly name and also groups them together into logical sets of features.  When the user uses the Display Filter Dialog in GTViewer, it basically tells which Filter Ids can be display and which ones will be hidden, then when the view is rendered only elements with the displayed Filter Ids will be drawn.  One drawback to using the Filter Id for both display control and style mapping is that the display filter resolution must match the same resolution required to allow all of the required styles.  For example, let say you have a Primary Conductor, and you want to have two display groups (Overhead and Underground).  However, your symbology needs to show both orientation and number of phases:

o   Above Ground – 1 Phase
o   Above Ground – 2 Phase
o   Above Ground – 3 Phase
o   Underground – 1 Phase
o   Underground – 2 Phase
o   Underground – 3 Phase

We will need 6 Filter Ids to support all 6 styles.   You can do some creative grouping to make simplify the Display Filters to 2 groups (Above Ground and Underground), and you may actually want to be able to control the display at this resolution.   But this problem can grow out of hand pretty quickly.  What if we wanted to add state to the symbology?  If we just used Proposed, Inservice, and Retired, you would need 18 Filter Ids to support all of the different styles.

As mentioned early, the Style Name Map unbinds the Filter Id from the Style Definition.  So, the Style Definition Id has no dependence on the Filter Id, and your Display Filters can be whatever you want, while your Style Definition Id can specify the styles you need.  The Style Definiton Id is an Instance Based property, but it still has the advantage of deferring the specification of the Style Properties until after the data conversion and allowing changes to the Styles without reconverting the data.  The cost here is that the GTViewer elements are slightly larger (4 bytes).

You can also use Style Maps and Style Name Maps at the same time.  The Style Map will always take precedence, and it may become unnecessarily complex if you use both methods for defining styles at the same time.  Not   a recommended approach, but fully supported.

Creating Data with Style Name Maps

Currently, the easiest way to create GTViewer data that uses a Style Name Map and Style Definition Ids is to use the GTViewer FME Writer Plugin.  For those of you who have used the GTViewer FME Writer Plugin before, there are a few things that are different.  There are some new Filter File creation modes and several new Format attributes.  If you have existing FME Workbenches, it will be difficult (but not impossible) to migrate them to the new modes; however, it is recommended to just create a new workbench and use the new modes.

I will illustrate using the new modes with a simple example.   I will convert the TIGER data seen in the examples above and go through each step of the process.

1)      Create a new Workspace.  The Reader will be Esri Shape and I will specify a TIGER shapefile
(tgr01089lkA.shp which contains roads).

The Writer will be GTI_GTViewer and I will give it Demo.gtm as the dataset to create.




2)      The layout will look like this to start with:




3)      In the Navigator, set the Coordinate Factors and Filter File Creation mode like the following:




The TIGER data is in an LL-83 projection (Latitude/Longitude), so the Coordinate Factors are for this are the standard values for latitude/longitude data (200/1000000/0).  The Filter Creation Mode is set to styleNameMap_global which will create one Style Name Map for the entire conversion.  You could select styleNameMap_byCat to create a separate Style Name Map for each category.  The default mode for FilterCreateMode  is Enhanced which creates the normal Style Map and Style Definition files.

4)      There are 4 new Format Attributes available:

  • gti_groupFilterName – specifies the Filter File Group for the feature created.  If this entry is not specified, it will default to “Features”.
  • gti_FilterName – specifies the name of the Filter Name for the feature created.   All features using this Filter Name will have the same Filter Id.   If this entry is not specified, it will default to the gti_featureName value ( which will default to the Reader’s Feature Type name if not defined).
  • gti_style_def_id – specifies the Style Definition Id to put on the element.  This entry should only be used if you are manually setting the Style Definition Id, which is generally not the case.  It is similar to using the gti_filterId attribute (which is also rarely used).
  • gti_featureName – specifies the name of the feature.  If this attribute is not defined, the Feature Type for the reader will be used as the default.

5)      When you are using the styleNameMap_byCat or styleNameMap_global modes, the gti_styleName entry is used to specify the name of the Abstract Style Name for the Style Name Map.   The Style Definition Id is automatically generated (or looked up) and assigned to element’s Style Definition Id property.  This format property greatly simplifies the creation of the Style Name Map since you can specify the Style Name as a constant or as a combination of the feature’s attribute values (using the string concatenator transformer).  The Navigator also has the Use Feature Name in StyleName option.  If this option is set to Yes, then the Filter Group Name will be prepended to the style name automatically (just as it is in the Enhanced mode).  If no Filter Group Name is specified, the Feature Name (defined by gti_featureName or the default Feature Type name) will be prepended.   If the option is set to No, then it will just be the value you set it to.  This option can greatly simply the setting of the style names if your style names between features are keyed on similar attribute values.  Otherwise you would always have to use a String Concatenator transformer to add the Feature Name to the Style Name.

6)      Grouping of the Filter Ids with the previously available modes was limited.  With the Enhanced mode, you got a group for each Feature Type and all individual styles used by that Feature Type were the Filter Items in the group.   This was a significant enhancement over the original method (Standard mode) which just put all of the Filter Items in one big group.   With the Style NameMap modes, the grouping by feature type doesn’t make as much sense since you don’t have to organize a large number of styles for that feature into a group.   You can just have one Filter Item for the FME Feature Type and they can be grouped however you like using the gti_groupFilterName format attribute.   If you don’t specify a gti_groupFilterName, it will default to “Features”.   You can still specify the Feature Type as a group and have any number of Filter Items in it by using the gti_filterName format attribute.

7)      When creating your workspace, it is probably a good idea to expose the following format attributes for all of your writer feature type:
  • gti_categoryId
  • gti_filterGroupName
  • gti_filterName
  • gti_styleName
  • gti_featureName

8)      For this example, the first feature type to configure is the street Shapefile (tgr01089lkA).  I am going to set the following properties:

  1. Set gti_categoryId to 2 (even though this is the default).
  2. Set gti_styleName to the CFCC attribute.  This is the Census Feature Class Code and is a good attribute for specifying different styles for the roads.  A15 is an Interstate, A21 is a Primary road.  These road types will be styled differently than the others.



9)      Running FME will produce a dataset with a Style Name Map that looks like this:

[Id To Name]
1=TGR01089LKA - A41
2=TGR01089LKA - A21
3=TGR01089LKA - A51
4=TGR01089LKA - A63
5=TGR01089LKA - A31
6=TGR01089LKA - A15
7=TGR01089LKA - A35
8=TGR01089LKA - A25
9=TGR01089LKA - A71
10=TGR01089LKA - A74
11=TGR01089LKA - A11
12=TGR01089LKA - P41

[Name To Style]

An Abstract Style Name is created for each CFCC value found in the data.  Since the Use Feature Name in Style Name option is set to Yes, the Feature Type Name is prepended to the value (in this example it is TGR001089LKA).   If we had set the gti_filterGroupName or gti_featureName to a value like “Roads” then the Style Name Map would look like:

[Id To Name]
1=Roads - A41
2=Roads - A21
3=Roads - A51
4=Roads - A63
5=Roads - A31
6=Roads - A15
7=Roads - A35
8=Roads - A25
9=Roads - A71
10=Roads - A74
11=Roads - A11
12=Roads - P41

[Name To Style]



The Filter File created by this conversion would look like this:
[Filter Info]
1|1|0|0|100|FEATURES|GROUP:FEATURES,1|0|0|0|0|
2|1|1|1|100|ROADS|GIS1:1,1,FEATURES,ROADS|0|0|0|0|


If gti_filterGroupName is set to “Roads” this will change the group name to “Roads” like this:

[Filter Info]
1|1|0|0|100|ROADS|GROUP:ROADS,1|0|0|0|0|
2|1|1|1|100|ROADS|GIS1:1,1,ROADS,ROADS|0|0|0|0|

In this case, setting the group name may not be very useful since the Group and the Filter Item are the same name.

If gti_featureName (instead of gti_filterGroupName) is set to “Roads” this will change the feature name to “Roads”, but not the group name like this:

[Filter Info]
1|1|0|0|100|FEATURES|GROUP:FEATURES,1|0|0|0|0|
2|1|1|1|100|ROADS|GIS1:1,1,FEATURES,ROADS|0|0|0|0|


10)   We can expand this example to have the Major Roads and Minor roads with different Filter Ids by adding a transformer to base the gti_filterName value on the CFFC attribute.   I will use a Value Mapper Transformer to map the value of A15 and A21 to “Major Road” and all others to “Minor Road”.  Then the Road_Type attribute will be set to the gti_styleName Format Attribute:



The Attribute Value Mapper Transformer just set the A15 and A21 value to “Major Road” and the default is “Minor Road”



The Style Name Map is simplified to the following with this change:

[Id To Name]
1=ROADS - MINOR ROAD
2=ROADS - MAJOR ROAD

[Name To Style]

Since the gti_filterName is not set, the filter name will default to the feature name:

[Filter Info]
1|1|0|0|100|FEATURES|GROUP:FEATURES,1|0|0|0|0|
2|1|1|1|100|ROADS|GIS1:1,1,FEATURES,ROADS|0|0|0|0|


However, if we also set the gti_filterName format attribute to the Road_Type value produced by the Value Mapper transformer, we can have Minor Roads and Major roads as the two Filter File entries:


The Filter File will look like the following:
 
[Filter Info]
1|1|0|0|100|FEATURES|GROUP:FEATURES,1|0|0|0|0|
2|1|1|1|100|MINOR ROAD|GIS1:1,1,FEATURES,MINOR ROAD|0|0|0|0|
3|1|2|1|100|MAJOR ROAD|GIS1:1,2,FEATURES,MAJOR ROAD|0|0|0|0|

  

12) The above example is virtually identical to the old style Enhanced Filter Creation mode.  To really show off what the Style Name Map can do, the example need to be a changed so that the gti_filterName and gti_styleName are not the same.




The only change here from the previous example is that the gti_styleName is set to CFCC instead of the Road_Type attribute.  The gti_filterName is still set to Road_Type.   The Style Name Map looks like this:

[Id To Name]
1=ROADS - A41
2=ROADS - A21
3=ROADS - A51
4=ROADS - A63
5=ROADS - A31
6=ROADS - A15
7=ROADS - A35
8=ROADS - A25
9=ROADS - A71
10=ROADS - A74
11=ROADS - A11
12=ROADS - P41

[Name To Style]


And the Filter File looks like this:

[Filter Info]
1|1|0|0|100|FEATURES|GROUP:FEATURES,1|0|0|0|0|
2|1|1|1|100|MINOR ROAD|GIS1:1,1,FEATURES,MINOR ROAD|0|0|0|0|
3|1|2|1|100|MAJOR ROAD|GIS1:1,2,FEATURES,MAJOR ROAD|0|0|0|0|


Now, we have 12 different Style Definitions used with only two Filter Ids.  This could not be done with the old Style Map.  And while this change is subtle, it does provide a powerful new way to organize your data.   If you had wanted to keep all 12 Style Definitoin for the individual road type, the Filter Display would have looked like this with the Enhanced mode:



Whereas it looks like this with the Style Name Map while still having all 12 styles:




The Style Name Map and Style Definition Id are new tools for you to use.  There is no reason to switch to this method of creating data unless you have a particular reason to.  However, if you are just starting to convert your data to the GTViewer format, it is an option that you should consider.


This post is also available as a .pdf document here.

Monday, July 29, 2013

Defining the Coordinate System with GTViewer 14





With GTViewer version 14, there is a change to the way your data’s Coordinate System is defined.  This change will affect anyone that does one or more of the following:
  • Uses the GPS to Track your location
  • Uses the Latitude/Longitude mode for the Coordinate Readout (on the status bar)
  • Uses the Locate X/Y command with the Latitude/Longitude option.
  • Uses the FromLatLong or ToLatLong methods in your code.
Previously, the GPSInfoFile entry was defined to point to a gpsinfo.ini file which was created when you selected a coordinate system on the GPS Dialog.  Now you must specify the coordinate system with the following entries in the [Additional Properties] section of the .GTM file.
o   CoordSys – This entry specifies the data’s Coordinate System.  Currently, two different specifications are accepted:

  • ProjectionParameters(name)  The Name value will appear on the GPS Dialog.  This specification type allows a PROJ.4 coordinate system parameter string to be specified with the CoordSysParam1 entry.  The CoordSysParam2 entry can be used to specify the Lat/long projection (it will default to NAD83).
  • GDA94(zone) – This specification type will the Geocentric Datum of Australia projection.  No parameters other than the zone are required.

o   CoordSysParam1 – this entry is used to specify the first parameter for Coordinate System if required.   Currently, this entry is only used if the CoordSys entry uses the ProjectionParameters type and is set to a PROJ.4 parameter string:

o   CoordSysParam2 – optional – this entry is used to specify the second parameter which specifies the Datum for the Latitude and Longitude projection to use.  By default, it is set to NAD83 for the ProjectionParameters type, but it can also be set to NAD27 and WGS84.

Example 1:

CoordSys=ProjectionParameters(NAD83 - Alabama East)
CoordSysParam1=+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=199999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs
CoordSysParam2=NAD83

Example 2:

CoordSys=ProjectionParameters(WGS84-UTM Zone 13N-Int Ft)
CoordSysParam1=+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=ft +no_defs
CoordSysParam2=WGS84


When using the ProjectionParameters option, the CoordSysParam1 value is defined as a Proj.4 parameter string.   A website, http://spatialreference.org/ , can be used to get your coordinate systems specification.   Use the Search option to find your coordinate system and then get the Proj.4



Since the units default to meters, you may have to add a parameter to convert you coordinate:

+units=us-ft     for U.S. Survey Feet
+units=ft          for International Feet

You can also provide the conversion factor:

+to_meter=0.3048006096012192    for U.S. Survey Feet
+to_meter=0.304801                        for International Feet:


Alternative ways to Specify Coordinate System

Since this is a fairly significant change to GTViewer, you may find that you have .gtx files or older sets of data that don’t have this information in it.   There are several options you can use to add this new information into your previous datasets:
1)      You can create a text file with the same name as the .gtm or .gtx file with “.coordsys” on the end of it (demo.gtm would be demo.gtm.coordsys).    The file will just contain the same entries that you would normally put in the .gtm file. This file will only be used if there is no coordinate information defined in the .GTM or .GTX file.
2)      You can put a default file called coordsys.ini  in the %appData%\Graphic Technologies Inc\GTViewer\CoordSys directory.  This file just contains the coordinate system entries.  It will be used if no other coordinate system information is found (in the .gtm or in a .coordsys file).
3)      You can also use the addProp.ini file to add or override the coordinate system entries to the additional properties section, but this approach will only work with .GTX files, and will apply to all datasets in the same directory.


This post is also available a .pdf document from here.

Wednesday, July 24, 2013

Beta GTViewer version 14.0.0.4 is Available



GTViewer version 14.0.0.4 is available.  This is a BETA version!

This beta version is ready for testing for anyone wanting to try it early.   There are several new features in this version described in my previous post.

This is the first version of GTViewer that requires the alternate Coordinate System specifications.  If you are using the GPS tracking feature, displaying your coordinate readout in Latitude/Longitude, or using Locate X/Y with Latitude/Longitude coordinates, you will need to make a change.   I will help anyone determine the new parameters to put in your .GTM file (just email me at support@gti-us.com).


-----------------------
14.00.00.04 - 7/24/13
-----------------------

- NEW - #7239 - Feature Counting will now support Dynamic Graphics elements.

- NEW - #7240 - Copy Dynamic Graphics to Session command added to the Tool menu.

- NEW - #7241 - DGCopyToSession method added.

- FIX - #7242 - The ActivateSelectedElementMove method was incorrectly showing the Drawing Info dialog when used.

-----------------------
14.00.00.03 - 7/19/13
-----------------------

- FIX - #7235 - The new CoordSys entries were only being recognized in .gtx files and not the .GTM.

-----------------------
14.00.00.02 - 7/18/13
-----------------------

- NEW - #7233 - Documentation Updates.

- CHG - #7234 - Updated EULA and Copyright Info in About Dialog.

-----------------------
14.00.00.01 - 7/17/13
-----------------------

- CHG - #7216 - The Select Symbol Dialog will now move relative to the GTViewer window.

- FIX - #7217 - Various fixes to the Drawing Info dialog and non-modal Draw Text, Select Symbol, and Draw Dimension Dialogs.

- NEW - #7218 - New option added to Tool menu to Reset all Child Dialogs to their default size and position (in case one gets lost offscreen).

- FIX - #7219 - The FeatureTooltip entries would not store correctly in a .gtx file if they had any prorpty greater than 255 characters.

- NEW - #7220 - The StyleNameFunctionality will now support .GTX files.

- FIX - #7221 - StyleNameMap was not exporting entries with multiple threshold ranges correctly.

- CHG - #7232 - The Coordinate System is now specified with the CoordSys entry in the Additional Properties section.

=======================================================================

-----------------------
11.00.00.27 - 5/29/13
-----------------------

- FIX - #7204 - Placing a symbol from the Select Symbol dialog after the dialog was already displayed would not reset the drawing info dialog.

- NEW - #7205 - Middle Mouse Button (or mouse wheel button) will activate the Pan mode.

- CHG - #7206 - Draw Text and Draw Dimension Dialogs are now non-modal.

- FIX - #7208 - Draw/Clear was not setting the file modified flag.

- NEW - #7215 - Freehand mode now supports the Drawing Info Dialog.


-----------------------
11.00.00.26 - 5/14/13
-----------------------

- NEW - #7196 - View History now stored in Session data.

- FIX - #7200 - The Clear button on the Location History Dialog will now add an Initial View entry.

- NEW - #7202 - The UserInteraction Data Property has been added to enable or disable user input to the map views.

- NEW - #7203 - The ActivateLocationHistoryDialog method was added.

-----------------------
11.00.00.25 - 5/6/13
-----------------------

- FIX - #7195 - The Text Range Debug mode was left own (drawing range boxes around all text and symbol elements).


-----------------------
11.00.00.24 - 5/3/13
-----------------------

- NEW - #7190 - New Methods: GetTabularDataFilename, GetFilterFilename, GetCategoryGraphicsFilename.

- NEW - #7191 - The PresetAvailableList method added to GTViewer to match the method of that name in GTVx.

- NEW - #7194 - GetDataFile method added to match GTVx.

GTData version 14.0.0.1 is Available



GTData version 14.0.0.1 is available.

-----------
14.00.00.01 - 7/19/13
-----------

- FIX - #7063 - GTFilterMod - Problem when the min and max thresholds were specified.

- FIX - #7073 - GTMergeInfo - Unmatched Records were not getting XY values added.


- NEW - #7077 - GTRemoveAtt - Option to remove attribute data in addition to obscuring it.

- CHG - #7093 - GTConv - The UseLevelAsFilterId flag will now work for elements with linkages (Framme and MSLink tags).

- NEW - #7109 - GTEncryptData - The GTEncryptData utility has been added to created encrypted versions of the tabular data files used by GTViewer.

- FIX - #7117 - GTShapeDbfConv - RemoveAttribute option was adding extra lines to the table definition.

- CHG - #7145 - GTUpdateGtg - Application renamed to GTUpdGtg.

- FIX - #7146 - GTUpdGtg - Delete elements (for the Update) would only be read if they had both a key1 and key2 value not set to 0.

- CHG - #7149 - GTMergeData - Updated to support the GTField Keys (GTI_Key1, GTI_Key2) and the GTI_Occurrence value for deleting.

- NEW - #7169 - GTQuery - Simplified Query Type and Key specifications.

- CHG - #7175 - GTQuery - FixedValue entries changed to KeepValue.  FixedValue is still supported.  Changed to be easier to understand what it does.

- NEW - #7176 - GTQuery - The OmitValueAndFlag entry has been added to require all OmitValue entries to be true before a record is omitted.

- NEW - #7236 - GT2Xml added to convert .gtg file to .xml (same as in GTViewer's Export to XML).

GTech Loader versions 10.0.0.6 and 9.0.0.7 are Available



GTech Loader versions 10.0.0.6  (for G/Tech 10)  and 9.0.0.7 (for G/Tech 9) are available.



-----------
10.00.00.07 - 7/24/13
-----------

- FIX - #7238 - The legend Filter clauses starting with the IN operator because validation didn't accept the comma delimter in the expression.

- NEW - #7243 - Custom SQL option for Graphics Features.


=============================================================
-----------
09.00.00.06 - 07/24/13
-----------

- NEW - #7244 - Custom SQL option for Graphics Features.

-----------
09.00.00.05 - 07/22/13
-----------

- FIX - #7237 - Legend Filter clauses starting with the IN operator because validation didn't accept the comma delimter in the expression.

Wednesday, July 10, 2013

GTViewer Version 14 – What happened to versions 12 and 13?



GTViewer version 11 has had a long run.  In fact, it has the longest stretch for a major version of GTViewer so far.  There are several reasons why version 11 has been around so long:  

First, the development of GTViewer for iOS (iPhone/iPad) and the matching GTViewer for Android (phones/tablets) was squeezed into the last development cycle.  Anyone interesting in trying them, please contact us!  

Second, GTViewer versions march along regardless of the Major Version number.  There are currently 28 incremental versions of version 11.   The Major version is really just where we draw a line in the Readme.txt file and update the splash screen.  However, we do like to roll the major version on a yearly basis because it gives us an opportunity to sum up and talk about what has been added to GTViewer over the previous year.

Third, the major version has generally been in sync with the year (version 1 was in 2001, …, version 11 was in 2011); however, we have pushed into the year so far over the past 11 versions, we are not longer in sync with the year.  Combined with the development of the Apple and Android versions of GTViewer, we are now well into 2013 and still on version 11.  I also have a problem with any version 13 (“I’m not superstitious, just a little stitious” as Michael Scott said), so this is a perfect time to sync right over 13 (and 12 too) and be at version 14.  I am sure this will be a little confusing, but when 2014 gets closer, it will seem normal.      **** Update:  it is now 2014 and all does seem normal again -  lol *****

We are in the process of finalizing GTViewer version 14 and testing its new functionality. It should be released sometime in the next few weeks.  Anyone wanting to try it now and help test is welcome to.  

There are a number of new features that will available in version 14 (some have already been introduced in version 11 updates):

-          Pan and Zoom
o   By popular demand, the mouse-wheel zoom in and out are now anchored to the mouse point instead of the view center. 
o   The regular zoom out is anchored on the first click instead of the view center.
o   The middle mouse button (usually associated with the mouse wheel) can be used to pan.

-          Style Name Map and Style Definition Id
o   Now supported in GTX file as well as the GTM File
o   Enhanced to allow Abstract Style Names which can be mapped to a list of Zoom Level Ranges and Style Definition names (rather than always being mapped to a list).
o   Support for Style Name Map in the FME Writer Plugin

-          Session Graphics (Redlines)
o   Drawing Info Dialog has been provided for most drawing commands to show segment length, total length, and Angle.
o   Reference Lines are now shown when drawing Circles and Rectangles, and on element Moves.
o   Draw Text, Draw Dimension, and Draw Symbol dialogs are now non-modal.
o   Draw Text and Draw Dimension dialogs have been updated to make them more user-friendly.

-          Admin Key combinations added:  Shift-Ctrl-Alt-S will enable the select of all filters and categories, Shift-Ctrl-Alt-E will enable the Edit Style button on the Attribute Info Dialog’s Element tab.

-          View Location History now stored in session.

-          Display Presets
o   Default button has been added to Dialog to return the settings to their original settings (without having to have a preset for this configuration).
o   Default Preset can now be specified in the GTM file.

-          Dynamic Graphics can have the display of its Actions controlled by ToolBox buttons.

-          New Command-Line options:  -indColor, -sess

-          Separator Lines can now be specified in the Application menu list.

-          Data Encryption now supported with the Tabular Data files.

-          The Thematic Query dialog now supports a Total Length command.

-          Data Monitors now support s Symbol elements.

-          Add On Apps
o   Add On Applications are like any other External Application used with GTViewer with the exception that you do not have to specify them in the data’s GTM file.  Once installed, they will appear in the Query or Application menu for all datasets.
o   Available Add On Apps:
  Feature Tooltip Builder – this tool helps you interactively build or edit a Feature Tooltip Definition
  Query Builder – this tool helps you interactively construct a Query Definition File for GTViewer.  These definition files are compiled with GTQuery.
  GTSpot Viewer – this tool will download and display all GTSpot records as Data Monitors.

GTField for Windows Mobile version 9.0.0.6 is Available



GT/Field for Window Mobile version 9.0.0.6 is available.

-----------
09.00.00.06 - 07/09/13
-----------

- FIX - #7231 - Editing existing Line features would not save the feature back.

- FIX - #7229 - Line Capture Mode was not working correctly.

- FIX - #7230 - Line Capture for 2D points was not working correctly (was expecting a Z).

-----------
09.00.00.05 - 01/11/13
-----------

- NEW - #7126 - Filters out the Feature Attribute capture type.

-----------
09.00.00.04 - 02/29/12
-----------

- FIX - #6966 - The %username% and %deviceId% tokens were not being expanded in the Post functionality.

-----------
09.00.00.03 - 02/18/12
-----------

- FIX - #6964 - Adjustments to gesture tolerance to make gestures less sensitive when trying to select a feature.

-----------
09.00.00.02 - 01/31/12
-----------

- CHG - #6530 - Concat function will now support up to 10 parameters.

- FIX - #6532 - Expression Evaluator was not handling nested expressions correctly if functions with more than one parameter were used as a parameters.
              
- FIX - #6536 - Expression containing internal parentheses and commas in literal strings could cause problem with the expression parsing.


PGTV .NET Control version 9.0.0.15 is Available



The PGTViewer .NET Control for Window Mobile version 9.0.0.15 is available.

------------
09.00.00.15 - 07/09/13
------------

- FIX - #7228 - Line Capture Mode was not working correctly.

------------
09.00.00.14 - 02/18/12
------------

- FIX - #6962 - Now prevents very close zoom in even when no Min Zoom Level is set.

- FIX - #6963 - Adjustments to gesture tolerance to make gestures less sensitive when trying to select a feature.

------------
09.00.00.12 - 01/31/12
------------

- FIX - #6919 - Complex Shape and Complex Shape with Holes elements could render the wrong linestyle.
              
- FIX - #6957 - Sensitivity Adjustments for gestures.

------------
09.00.00.11 - 06/19/11
------------

- NEW - #6778 - Vertex Move mode for Draw Line and Area redlines.

- NEW - #6780 - VertexSelectionTolerance property added.

------------
09.00.00.10 - 06/15/11
------------

- FIX - #6657 - Problem with styles on Complex Elements (Type 1, 2, 3).

- CHG - #6776 - The number of Mini Data Monitor Lists has been increased from 10 to 20.

Tuesday, June 04, 2013

Documentation Reference

There is a lot of documentation available on GTViewer and the GTViewer family of products. Most of it is delivered with the relavant products; however, there are a few documents on specific topics that are not delivered with a product, but are available on request. This post lists all of the documentation that is available, what it is about, and where it is found.

GTViewer.doc

  • User’s Guide for GTViewer.
  • Delivered with GTViewer.

GTVConfig.doc
  • Describes all of the entries in the .GTM file.
  • Defines the formats for data.tab, filter#.flt, style.map, style.map, and linestyle.def.
  • Delivered with GTViewer.
Dynamic Graphics in GTViewer and GTVx.doc
  • Describes how to use the Dynamic Graphics Interface for GTViewer and GTVx
  • Delivered with GTViewer
Feature Tooltips in GTViewer and GTVx.doc
  • Describes the use of Feature Tooltip in GTViewer and GTVx.
 GTViewer-DotNet_Interface.doc
  • Programmer's Reference for developing external application for GTViewer with Visual Studio .NET.
  • Delivered with GTViewer
 GTVx.doc
  • Programmer’s Reference for GTVx.
  • Includes all programming documentation for GTViewer (which uses a subset of the GTVx methods).
  • Delivered with GTVx (and with the GTViewer SDK).
GTV-PGTV-Control.doc
  • Programmer's reference for the GTV .NET Control and the PGTV .NET Control
  • Delivered with the GTV Control and PGTV Control.

GTData.doc
  • defines all data conversion and data manipulation utilities delivered with GTData.
  • Explains the process for converting ESRI Shapefile data and Intergraph Framme data.
PGTViewer.doc
  • User’s Guide for Pocket GTViewer.
  • Delivered with Pocket GTViewer (on the desktop).
PGTVDemoScript.doc
  • Overview for using Pocket GTViewer with the sample data set and sample pole inspection application.
  • Delivered with Pocket GTViewer (on the desktop).
GTRead.doc
  • Programmer’s Reference for the GTRead ActiveX control.
  • Delivered with the GTViewer SDK.
GTCreate.doc
  • Programmer’s Reference for the GTCreate ActiveX control.
  • Delivered with the GTViewer SDK.
GTWebServer.Doc

  • User’s Guide for GTWeb Server
  • Programmer’s Reference for GTWeb Server.
  • Delivered with GTWeb Server.

GTWeb.Doc

  • User’s Guide for GTWeb Client.
  • Programmer’s Reference for GTWeb Client.
  • Delivered with GTWeb Client. 
GTWeb Server API.doc
  • Developer's reference for programming with the GTWeb Server
GTVExchInfo.doc
  • Defines the Application Programming Interface (API) for Pocket GTViewer.
  • Delivered on request.

GTViewer Text and Symbol Elements.doc
  • Provides detailed information on Text and Symbol element parameters.
  • Delivered on request.
GTV_AsciiDBFormat.doc
  • Describes the format of the ASCII Data file (data.txt).
  • Delivered on request.
Linkages and Embedded Data.doc

  • Describes the Difference between Linked and Embedded Data in the GTViewer format.
  • Delivered on request.
GTechLoader.doc
  • User's Guide for the GTech Loader application.
  • Delivered with GTechLoader