Showing posts with label GTVx. Show all posts
Showing posts with label GTVx. Show all posts

Tuesday, April 12, 2016

GTVx version 14.0.0.15 is Available



Version 14.0.0.15 of GTVx is available.


-----------------------
14.00.00.15 - 4/12/16
----------------------- 

- FIX - #7622 - Importing a Style Definition or Map (method or GUI) would not set the Session modified flag.

- FIX - #7641 - The Line splitting logic was not in GTVx for FeatureTooltip entries.

- FIX - #7642 - GTVx was not splitting up ToolboxEntry entries for .gtx files if they were too long.   These entries are not used, but they should be split up for GTViewer to use any extracts it makes.

- FIX - #7659 - FillOffForRaster was not working for Custom Raster.

- NEW - #7663 - FillOffForCustomRaster and UseHideRasterForCustomRaster added to Additional Properties.

- NEW - #7664 - FillOffForCustomRaster, FillOffForRaster, UseHideRasterForCustomRaster added to Get/SetDataProperty.

- FIX - #7676 - User Defined Linestyles using the ScaleFlag=1 where not using a fixed scale for Text Components.

- NEW - #7690 - ExportSessionGraphicsToShpEx added to support the omission of attributes from the .DBF files.

Wednesday, September 02, 2015

GTVx version 14.0.0.14 is Available



Version 14.0.0.14 of GTVx is available.


-----------------------
14.00.00.14 - 9/02/15
----------------------- 

- FIX - #7613 - Raster Categories with raster file list files would error out on invalid files in the list.  Changed to ignore them.

- FIX - #7617 - The Point Label option in the Dynamic Graphics would not work when the point features was Text or used a True Type font.

- NEW - #7618 - Where Am I expressions can now use the following tokens:  GTI_FILTERID, GTI_FILTERNAME, GTI_CATEGORYNAME, GTI_GIS_FEATURE_NUM, GTI_GIS_FEATURE_NAME, GTI_GIS_COMPONENT_NUM, GTI_GIS_COMPONENT_NUM.

Wednesday, August 12, 2015

GTVx version 14.0.0.12 is Available



Version 14.0.0.12 of GTVx is available.


-----------------------
14.00.00.12 - 8/12/15
----------------------- 

- FIX - #7570 - The Name token in Feature Strings was not working correctly.

- FIX - #7572 - The Type Library (gtvx.tlb) had the GetCatFilterListFromFeaStr method incorrectly defined.

- FIX - #7597 - Default values for Shape Border Color Id and Value for Style Definitions was not correct.

- FIX - #7598 - Switching between Color Value and Color Id properties would not always remember the last color from the color table to put in the color value.

- FIX - #7599 - StyleManager did not always sense a change in ShapeBorderColorId, ShapeBorderColorValue, TextExtendedStyleColorValue, TextExtendedStyleColorId, and would not save those modifications.

- FIX - #7600 - Copy Button added so Style Manager's Definition Edit dialog.  It will copy the current style definition to the clipboard in the format used by the Style Definition file.

- FIX - #7604 - The AddLocationHistory method was not setting the modified session flag, so it was possible to not save the location history when exiting a session.

-----------------------
14.00.00.11 - 4/21/15
----------------------- 

- FIX - #7544 - The Feature Tooltip expressions were not working with multiple occurrence records.

-----------------------
14.00.00.10 - 3/3/15
----------------------- 

- NEW - #7512 - The GetElementInfo method will now include the Area and Length values if they are available.

- FIX - #7522 - Problem with Feature Counting if you count all Dynamic Graphics, then count Dynamic Graphics in Shape, then go back and count all Dynamic Graphics.

Wednesday, June 17, 2015

Feature Strings

Feature Strings have been around since the introduction of Toolboxes in GTViewer version 8.0 in 2008.   They are simply a way to specify a feature or group of features to do something with.  For Toolboxes, they allow you to turn features on or off using Toolbox button. 

Traditionally, specifying a feature in GTViewer was done with a Category Id/Filter Id pair.  This method worked well for data using instance based symbology like CAD (Microstation, AutoCAD) and some GIS systems like MGE and FRAMME.    However, data using Style Based symbology, like SmallWorld and G/Technology, complicate the use of Filter Ids because many Filter Ids are now associated with a single feature (one for each style used with the feature).  For example, a primary conductor may have 200 different styles associated with it.  Figuring out those 200 Filter Ids, while simple, is tedious.  To compound this problem, only styles that get used are mapped to a Filter Id, so as a feature uses more and more styles (which is very common), the set of Filter Ids associated with the feature will increase requiring constant updating of the Filter Id list used to specify the feature.  This can problem will eventually result in having features that you can’t locate, can’t display, can’t turn off, can’t select, etc.

To solve this problem, the Feature String was created to give a simpler way to specify a feature or set of features by using feature metadata instead of the Filter Ids.  For example, if you want to specify a Pole, you can now say “Pole” instead of finding all of the different Filter Ids associated with every component of a Pole.   If a new style for Poles is used (which will use a new Filter Id), Feature Stirngs will automatically picked up by the Feature String that specifies “Pole”.

Feature String History

This concept of using metadata to find Filter Ids for Features was already used internally by the GTViewer Writer Plugin for FME.  By default, the FME Plugin uses the next available Filter Id anytime a new Style is needed.  To figure out which styles goes with a particular feature, the FME Plugin added to comment to each Filter Id entry in the Fitler File (.flt) to identify which FME_Feature_Type created the entry. 

The Filter Files (.flt) used by GTViewer contain an entry for each Filter Id used in a Category.  Each entry in the Filter File has a Filter Id and the Filter Name plus some other fields.  One of those additional fields is a Description field that has generally been used as a comment area (because it is not shown or used anywhere else), but it can now be used to define metadata about the Filter Id.   This metadata varies depending on the source GIS data and what method was used to convert the data to the GTViewer format.   Several notations are supported in the comment field:

Used by the GTech Loader:

GIS:<G3E_FNO>,<G3E_CNO>,<G3E_SRNo>,<G3E_SRRowNo>,<Style Name>

GIS:<G3E_FNO>,<G3E_CNO>,<G3E_SRNo>,<G3E_SRRowNo>,<Style Name>,<Feature Name>,<Component Name>

GIS:<Feature>,<Component>,<Style Rule Num>,<Style Num>,<Style Name>,<Feature Name>,<Component Name>

Generic Tag (used by newer versions of FME Writer Plugin):

GIS1:<Feature>,<Component>,<Style Name>

Originally Used for SmallWorld Data, but simple and flexible and can be used by custom data converters.

SW:<Feature>
SW:<Feature>,<Component>
SW:<Feature>,<Component>,<Style Name>

Used to Support some older dataset where a Feature Name was provided in the comment:

Feature <Feature>

Used by Older versions of FME Writer Plugin:

FME:<Feature>

With the feature metadata available in the Filter Files, the Feature String were devices to search this information in a variety of ways to pull out the Filter Ids you need based on a more abstract specification.   There are currently 7 different Feature String Items (commands) that you can use to select a list of Filter Ids.  These items can be used by themselves or combined with other.


Feature String Syntax

A Feature String is a list of items or a semicolon (;) delimited list of items:

<Feature String> = <item> [{; <item>}]

An Item can be one of the following:

<item> = Cat(<category Id>)

<item> = Gis(<category Id>, <Fea/Comp String>)

<item> = Flt(<category Id>,<Filter String>)

<item> = Dft(<category id>)

<item> = All(<category id>)

<item> = Contains(<category id>,"<string>")

<item> = Name(<category id>,<mode>,”<filter name>”, ”<feature>”,”<component>”, ”<feature name>”,
”<component name>”, ”<style name>”)

<Fea/Comp String> = <feature>[:<component>][{,<feature>[:<component>]}]

<Filter String> = <Filter Item>[{,<Filter Item>}]

<Filter Item> = <filter Id>
<Filter Item> = <Low Filter id>-<High FilterId>


In the above notation, tokens in square brackets ([]) are optional; tokens in curly braces ({}) can repeat.  This notation is probably over complicating 4 fairly simple entries that are described in plain English below:

·       Cat(<category Id>) – The Cat item will get all Filter Ids for a Category.

o   Cat(1)  = All Filter Ids in Category 1
o   Cat(1);Cat(2);Cat(3) = All Filter Ids in Categories 1, 2, and 3

·       Gis(<category Id>, <Fea/Comp String>) – The GIS item will get a list of Filter Ids for all of the Feature/Components specified in the Fea/Comp String which is a comma separated list of <Feature> or <Feature>:<Component> items.  If only the Feature is specified, then all Component Filter Ids will be retrieved; if a Feature:Component is specified, only the Filter Ids for the specific Feature Component will be retrieved.

o   Gis(2,Pole) = Category 2, All Pole components
o   Gis(2,Pole:Symbol) = Category 2, Only Pole Symbol component

For GTech Data, the Feature and Component fields use the G3E_FNO and G3E_CNO attributes, so they are numbers:

o   Gis(3, 300) = Category 3, Feature 300 (all components)
o   Gis(3, 300, 305, 306) = Category 3, Features 300, 305, and 306 (all components of each)
o   Gis(3, 300:10001, 300:10002) = Category 3, Feature 300 Component 10001 and Feature 300 Component 10002
o   Gis(3, 300:10001, 400, 500)  = Category 3, Feature 300 Component 10001 and Feature 400 and 500 (all components of each).
o   Gis (3,300); Gis(4,900) = Category 3 Feature 300  and Category 4 Feature 900



·       Flt(<category Id>,<Filter String>) – The Flt item will get a list of Filter Ids for the specified category.  The Filter String can be specified as a comma delimited list of Filter Ids, a hyphenated list for a range of Filter Ids, or a combination of the two.

o   Flt(5, 1,3,5) – Category 5 Filter Ids 1, 3, and 5
o   Flt(5, 1-10) – Category 5 Filter Ids 1,2,3,4,5,6,7,8,9,10
o   Flt(5, 1,4,20-23) – Category 5 Filter Ids 1,4,20,21,22,23
o   Flt(5, 1,3,5);Flt(6,30,32-35) – Category 5 Filter Ids 1,3,5  and Category 6 Filter Ids 30,32,33,34,35

·       Dft(<category id>) – The Dft item will get the list of Filter Ids in a specified category that are displayed by default as defined by the category’s Filter File (.flt).

    • Dft(5) – Get all of the filter ids for Category 5 that are Displayed by default


·       All(<category id>) - The All item will get all Filter Ids in the specified category.  This item is functionally equivalent to the Cat item.

    • All(5) – Get all Filter Ids for Category 5

·       Contains(<category id>,"<string>") - The Contains item will find all Filter Ids in the specified category that contain the specified string in the Filter Id’s Name.

    • Contains(5,"[Foreign Owner]") –Category 5 that contain “[Foreign Owner]” in the Filter Name.

·       Name(<category id>,<mode>,"<filter name>","<feature">,"<component>","<feature name>","<component name">,”<style name>") - The Name item will find all Filter Ids in the specified category that meet the search criteria.  This is a very powerful and potentially confusing item to use.   The Mode parameter can be:

-       AND – All of the criteria must be true (or not used) to get the Filter Id
-       OR –  Any one of the criteria can be true to get the Filter Id
-       INVERTAND – If all of the criteria is true, do not get the Filter Id
-       INVERTOR – If any of the criteria is true, do not get the Filter Id

The rest of the parameters can be left empty (don’t use) or a wild-carded string can be specified.  If a wild-card is not specified, the string must match exactly (not case sensitive).  A wild-card can appear at the beginning, end, in the middle, or any combination of these.

    • NAME(800,AND,*,519,966,*,*,"Ln_W_Pipe_Op_*") = Category 800, all Feature 519, Component 966 whose Style Name starts with “Ln_W_Pipe_Op_”

o   Name(5,AND,"*Foreign Owner*") = this is equivalent to the Contains example.



Where Feature Strings are Used

There are a lot of tools and functionality that use Feature String:

o   Feature Tooltips and the Feature Tooltip Builder App can use Feature Strings to specify which feature a tooltip is for.

o   GTPreset is a GTData tool that creates a Display Preset file (.gtp) from a description of what you want display.  This description is composed of Feature Strings.

o   Where Am I functionality in GTViewer and GTWeb uses Feature Strings to specify which shapes to look for.

o   Dynamic Graphics uses Feature Strings to specify which features to operate on.

o   GTViewer and GTVx both have methods exposed in their APIs to use Feature Strings:  GetFilterListFromFeatureString and GetCatFilterListFromFeaStr.

o   The DGN Export Exclude String in GTViewer uses Feature Strings.

o   The GTV Control has two methods that use Feature Strings:  GetCategoryListFromFeatureString and GetFilterListFromFeatureString.

o   GTQuery and the Query Builder App use a subset of the Query String (basically the GIS item) modified to fit the context of the existing Query Definition Files.  

o   Toolboxes in GTViewer use Feature String for the Display Toggle functionality.

o   GTViewer for iOS uses Features String to associate Data Collection forms with features.



Monday, February 09, 2015

GTVx version 14.0.0.9 is Available



Version 14.0.0.9 of GTVx is available.


-----------------------
14.00.00.09 - 2/9/15
----------------------- 

- NEW - #7466 - New method:  SetCoordinateConversionInfo method added.

- NEW - #7468 - The CreateSessionCategory entry has been added to the Additional Properties section to create a session category for .gtx files that do not have one.

- FIX - #7485 - Explicit paths in the Link definitions that were using a UNC path (starting with \\) were having one of the backslashes removed.

- FIX - #7487 - Hatch Fills on Shapes with Hole elements will no longer obscure raster or background color underneath.

- NEW - #7497 - The HeaderLabel, HeaderLabelSize, HeaderLabelBackgroundColor, HeaderLabelForegroundColor properties have been added to Get/SetDataProperty.  The same entries have also been added to the Additional Properties section fo the .GTM File.

Thursday, July 17, 2014

GTViewer and GTVx with Touch Screens

With Windows 8 and 8.1 machines becoming more widespread, the availability of a Touch Screen is common .  It is also possible to use Windows 7 with a Touch Screen too, so the chances of using GTViewer with a Touch Screen is more and more likely.

Version 14.0.x.21 of GTViewer and 14.0.x.7 of GTVx both provide specific settings to make them run better with a Touch Screen interface.   They have always worked with Windows 8 and 8.1 using conventional inputs (mouse and keyboard), but the scrollbars on the map view window seem to confuse the Touch Screen interface.

In GTViewer, you can now use the Options/Settings dialog to configure 4 different setting values to better use a Touch Screen interface:


  1. Change View Scrollbars to NO.
  2. Change the Mouse Wheel Increment to a negative value.   This will make a 2 finger pinch gesture zoom out instead of zoom in.
  3. Change the Toolbar Button Size to Large, Larger, or Largest.  Making the buttons larger, makes them easier to use with touch.
  4. You may also want to set the Selection Tolerance to a higher value since touch is not as accurate as a mouse click.


The View Scrollbars and Toolbar Button Size settings are new to 14.0.x.21.   Mouse Wheel Increment and Selection Tolerance were already available, and you must use the Set as Default button to retain the value beyond the current session.


In GTVx, you can use the following to set the setting values:

   AxGTVX1.ShowScrollBars(0)
   AxGTVX1.SetDataProperty("MouseWheelIncrement", "-1.5")
   AxGTVX1.SetDataProperty("SelectionTolerance", "6")

Make sure to call the ShowScrollBars method before you open any data.


With these settings, you should be able to use a Pinch to zoom in or out in any mode that you can use the moue wheel to zoom in or out.  

A Touch should behave like a mouse click in most GTViewer modes, and Touch and Hold will activate a right mouse click.


Wednesday, July 16, 2014

GTVx version 14.0.0.7 is Available



Version 14.0.0.7 of GTVx is available.


-----------------------
14.00.00.07 - 7/3/14
----------------------- 

- NEW - #7444 - ShowScrollBars method added to allow scroll bars to be hidden, and fixes to the view when Scroll Bars are turned off.

- FIX - #7445 - ElementGetRange method did not return the correct range for symbols because it was not using the style info.

- FIX - #7453 - Rotated Views would sometimes not refresh entire view, especially when a landscape view was rotated 90 degrees.

- FIX - #7457 - Locates on Count Detail features always used the default zoom level.  It will not fit the feature if the fit zoom level is better than the default.

Wednesday, June 11, 2014

GTVx 14.0.0.6 is Available



Version 14.0.0.6 of GTVx is available.

This is a long post on GTVx update because we having made on a post on it in a while.

-----------------------
14.00.00.06 - 6/11/14
----------------------- 

- NEW - #7260 - IgnoreDataIdForLinks was added to Additional Properties section and to the Get and SetDataProperty methods.

- FIX - #7273 - Dynamic Graphics was not working correctly with encrypted data.

- FIX - #7279 - Composite Group elements (extended Style id = 1, 2, or 3) were not correctly handling having no Style Rule.

- FIX - #7280 - Composite Linestring and shapes(Group Type 1 and Type 2) were not respecting the DisplayWeightThreshold or DisplayStyleThresholds.

- FIX - #7286 - Right Mouse menu pops up if the right mouse menu was up when a shape or line was canceled with right mouse button.

- FIX - #7288 - The Dynamic Graphics Highlight Fill option did not work on  elements who style defined the fill status.

- NEW - #7293 - Queries will now support HighlightMode 2 which will not highlight.

- FIX - #7303 - Placing Text Redlines with multiple lines could truncate each line to the size of the first line.

- FIX - #7309 - Raster files with more than 3 color bands were causing problems.

- NEW - #7314 - New method GetCatFilterListFromFeaStr.

- NEW - #7316 - New methods for Expression Evaluation:  ExpStateReset, ExpStateAddValue, ExpStateGetValue,  ExpEvaluate, ExpValidate, ExpStateGetValueType, ExpStateGetInfo, ExpStateLoadElementData, ExpStateLoadTabularData.

- FIX - #7327 - Mouse Wheel Zoom did not work when using dual screens where the primary monitor is on the right screen and the map view is on the left screen.

- FIX - #7344 - The absolute token in the Link definitions was not working correctly.

- FIX - #7346 - The filter map for Export to DGN was sometimes using a dashed line for stroked symbols and text elements when they should have been solid lines.

- FIX - #7379 - FRAMME Reference features were not correctly being de-referenced.

- NEW - #7386 - PresetChanged event and SendPresetChangedEvent data property added.

- NEW - #7387 - SetSelectSymbolGroup method added.

- FIX - #7388 - The Update Preset button did not refresh the Preset list with selected presets indicated.

- NEW - #7390 - PresetGetCurrentState method added.

- FIX - #7395 - ASCII to Element conversion was treating Arc 64 elements as it its components were integers.  Used by the Saving session as .GTS functionality.

- NEW - #7401 - New Event: ClearAllSessionGraphics

- FIX - #7416 - The ToLatLong and FromLatLong methods were not working with Custom Coordinate systems.

- FIX - #7434 - AlwayHideRaster was not working correctly.  It would sometimes be used when it wasn't set.

- FIX - #7435 - Fixes to the Rendering that could cause some files not to display and lines in printing.

-----------------------
14.00.00.03 - 8/21/13
----------------------- 

- FIX - #7258 - Invert a Dynamic Graphic element's color if the color is the same as the background.


-----------------------
14.00.00.02 - 8/02/13
----------------------- 

- FIX - #7253 - Count for Dynamic Graphics was not working on the Detail Dialog for Info and Locate if the values were no longer visible in the view.

-----------------------
14.00.00.01 - 7/26/13
----------------------- 

- CHG - #7121 - The Unit label associated with Length in feature counting is now put in the column header instead of each record.

- FIX - #7131 - Dynamic Graphics Mask was not filled when emphasize mode was on.

- FIX - #7132 - The Mask option with Dynamic Graphics was not supporting the Allow Emphasize option correctly.

- FIX - #7136 - Draw Text dialog string process changed to match GTViewer's and will no longer leave a trailing carriage return.

- FIX - #7148 - The Dimension Element dialog showed the Label orientation as Left/Top and Right/Bottom.  They should be Right/Top and Left/Bottom.

- FIX - #7152 - When Drawing a Shape, the Right Mouse menu would display when using the Rightmouse button to close the shape.

- NEW - #7154 - The zoom level for style select for Print can be specified now with the Print Property.

- FIX - #7155 - Decryption mechanism was not fully implemented.

- NEW - #7156 - GetFeatureTooltipDef and RemoveFeatureTooltip methods added.

- NEW - #7157 - Get Total Length button added to the Highlight/Thematic Query dialog.

- NEW - #7160 - New Methods: GetTabularDataFilename, GetFilterFilename,GetCategoryGraphicsFilename

- NEW - #7162 - InitializeGetIntersecting and GetNextIntersecting methods have been added.

- FIX - #7182 - Placing Session Graphics Text that uses a style rule to change the font id, has been modified to use the style rule font so that the interactive display of the font is correct.

- CHG - #7185 - Mouse Wheel Zoom is now center on mouse cursor for non-rotated views.

- NEW - #7186 - The DMUpdateBitmapByFilterId method has been added.

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

- NEW - #7193 - GetExtractFilename, GetSessionFilename, GetExtractFilename methods added to match GTViewer.

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

- NEW - #7198 - New Method:  CloseFile

- NEW - #7199 - The Location History dialog from GTViewer has been added and is displayed with the ActivateLocationHistoryDialog method.

- NEW - #7201 - The UserInteraction Data Property has been added to enable to disable user input to the control.

- FIX - #7209 - DrawClearAll was not setting the file modified flag.

- NEW - #7224 - The CompactLabelMode Print Property was added.

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

- NEW - #7247 - The By Feature and By Feature Component options added to the Feature Count Options dialog.

- NEW - #7248 - The Info and Save options have been added to the Count Details dialog.

- NEW - #7249 - Attribute Info Dialog will now show Override Info on Element tab.

- NEW - #7250 - Attribute Info Dialog will now show the Style Definition Id and Style Name Map info on Element Tab.

- NEW - #7251 - FromLatLong, ToLatLong, and CoordinateConversionAvailable methods have been add.  These methods are supported by the CoorSys, CoordSysParam1, and CoorSysParam2 entries in the Additional Properties section of the .GTM.

Friday, December 07, 2012

GTVx version 11.0.0.10 is Available



Version 11.0.0.10 of GTVx is available.

-----------------------
11.00.00.10 - 12/07/12
-----------------------

- CHG - #7091 - The SetCurrentFilterId method has been changed to match the one in GTViewer where the filter id is not checked against the session category's filter file to see if it is valid.

- FIX - #7092 - Selecting Shape with Hole elements did not match the behavior in GTViewer.

- NEW - #7096 - GetDataRange method added.

- CHG - #7101 - The DataSetId property for GetDataProperty  has been returned to return the default value if the DataSetId entry is not defined in the .GTM file.  The default value is the name of the parent .GTM or .GTX file.

- NEW - #7111 - Encryption mode for tabular data.


.

Friday, September 21, 2012

GTVx version 11.0.0.9 is Available



Version 11.0.0.9 of GTVx is available.

-----------------------
11.00.00.09 - 09/21/12
-----------------------

- FIX - #7056 - Final Measurement reading was not showing the unit.

- FIX - #7057 - DrawDimension32 method was not using the active color, style, or weight.

- NEW - #7068 - GetAttributeDataExEx method added to match GTVx.

- FIX - #7069 - Fix for #6796  caused the highlight for styled items to not work.

- FIX - #7070 - Dynamic Graphics was not computing ranges correctly for symbol and text elements using style definitions.

- FIX - #7071 - Copy view to Metafile was not rendering Dynamic Graphics.

- CHG - #7086 - Symbol Element using Standard Symbol fonts will now ignore justification settings (since they were not supported anyway).

- FIX - #7089 - The DisableDisclaimer Data Property was not working correctly.

- NEW - #7090 - The AlwaysHideRaster entry is now supported in the Additional Properties section of the .gtm file. 

Tuesday, June 26, 2012

GTVx version 11.0.0.8 is Available



Version 11.0.0.8 of GTVx is available.

-----------------------
11.00.00.08 - 06/25/12
-----------------------

- FIX - #6991 - Dynamic Graphics would use previous attribute values for features that did not have the value set or not record defined.

- NEW - #7001 - The GetSessionFile method was added.

- FIX - #7005 - Link definitions were not restricting matches to the data id, so if two data sets had the same table and attribute, both would match.

- NEW - #7012 - Shapefile export will now take groups elements containing only lines and/or linestring elements and convert them to a single polyline element.

- FIX - #7014 - Shapefile Export will now ignore group elements with no sub-elements.


- NEW - #7017 - The Display Preset Dialog was updated to match GTViewer's where it shows the active preset and has a Default button.

- NEW - #7024 - If a GTField Feature is reviewed with Attribute Info mode, the GTField Item name will be used to describe it instead of just GTField.

- NEW - #7032 - CustomAttributeInfoTabMode entry has been added to Additional Properties section of the .GTM file to show only Custom Attribute Tabs in the Attribute Info Dialog when Custom Tabs are available.

- NEW - #7037 - GetCategoryListFromFeatureString method added.

- NEW - #7050 - Support for ~GTSpot~ embedded data records.
 

Tuesday, April 03, 2012

GTVx version 11.0.0.7 is Available




Version 11.0.0.7 of GTVx is available.

-----------------------
11.00.00.07 - 03/08/12
-----------------------

- NEW - #6959 - The IgnoreDisclaimer Property has been added.

- FIX - #6969 - If you set ShowRasterStatus to 1 in the Additional Properties section of the .GTM file, the raster filename will be displayed in the status bar when it is being initialized.

- FIX - #6971 - LoadDefaultStyle Info would clear all styles if you were in a Session File created from a .GTX file.

- CHG - #6973 - Count button on the Attribute info will now show for all Tabs and not just the Element tab.

- NEW - #6975 - UpdateCategoryFiles method has been added.

- FIX - #6976 - Problem with ExportView with a .BMP not working after changing data with OpenFile.  

Monday, January 30, 2012

GTVx version 11.0.0.6 is Available




Version 11.0.0.6 of GTVx is available.

-----------------------
11.00.00.06 - 01/30/11
-----------------------

- FIX - #6936 - Hatch Fills on Shapes will no longer obscure raster underneath.

- FIX - #6941 - Print To Scale was not logging the correct view range in the logfile.

- NEW - #6942 - Additonal Logging added with PrintToScale event.

- FIX - #6945 - PrintViewToScale was not working.

- FIX - #6947 - Dynamic Graphics elemetn were picking up Style Rule definitions since the Feature Tooltip support was added.

- FIX - #6948 - Magnify mode should be disabled when the view is rotated.

- FIX - #6950 - Feature Counting was not preserving the Extended Style Id for linears split on the boundary, so elements converted to session graphics would not keep a UDLS.

Friday, December 30, 2011

GTVx version 11.0.0.5 is Available




Version 11.0.0.5 of GTVx is available.

-----------------------
11.00.00.05 - 12/30/11
-----------------------
 

- FIX - #6928 - Custom Line Styles (dash patterns) were not correctly scaled for printing and they looked solid.

- FIX - #6930 - The Line Syle property in the Style Rule section of the Element tab of the Attribute Info dialog will now say Using Dash Pattern instead of 10.

Friday, December 02, 2011

GTVx version 11.0.0.4 is Available




Version 11.0.0.4 of GTVx is available.

-----------------------
11.00.00.04 - 12/2/11
-----------------------

- NEW - #6903 - BGMasks now support Fill Styles.

- NEW - #6904 - BGMaskDisplayFlag now supported with Get/SetDataProperty.

- FIX - #6906 - The Highlighted BGMask elements were using the last BGMask fill style used instead of the element's fill style. Also changed from always drawing a solid fill highlight to the element's fill style.

- FIX - #6915 - Complex Shape and Complex Shape with Holes elements could render the wrong linestyle.

- FIX - #6922 - BigButtonFlag now supports two more sizes (2 and 3).

-----------------------
11.00.00.03 - 11/11/11
-----------------------

- NEW - #6902 - Documentation updates.


-----------------------
11.00.00.02 - 11/07/11
-----------------------

- FIX - #6892 - Export to Shapefile was not converting Arc Elements correctly.

- CHG - #6895 - The GIS: tags in the filter file descriptions will no longer use the colon (:) as a delimiter.

- NEW - #6898 - New Method: GetFilterListFromFeatureString

- NEW - #6900 - The Name() tag is now supported by the filter and feature string descriptions to search for Filter Name, Feature Name, Feature Num, Component Name, Component Num, and Style Name by wildcarded strings when selecting filter ids.

-----------------------
11.00.00.01 - 10/29/11
-----------------------

- FIX - #6852 - The Current View Filter on the the Display Filter Dialog was allowing you to change the status of filter ids that were
thresholded off. You shouldn't be able to change these and if you turned them off, it would be confusing since they would disappear at the threshold they should be displayed at.

- NEW - #6853 - Current View Filter will now show the Min and Max thresholds for each filter id.

- NEW - #6864 - Support for embedded data with Dynamic Graphics.

- FIX - #6869 - Complex Linestring would not render the standard linestyle correctly when specified in a style rule.

- NEW - #6884 - Style Definition/Mapping info is now stored in the session, if it is changed.

- NEW - #6885 - Feature Tooltips will now support Dynamic Graphics items.

- NEW - #6886 - New Methods: HighlightSetLinkageInfo and HighlightClearLinkageInfo.

- NEW - #6887 - The Attribute Info dialog will now show Feature Tooltip and Dynamic Graphics info on the Element Tab.

- FIX - #6888 - The GetGisInfoFromFilterId method was not returning the correct information.

- FIX - #6889 - GetDisplayFilterString will now longer return filter ids for group entries.





Friday, November 11, 2011

GTVx version 11 is Released!



Version 11.0.0.03 of GTVx is available.

-----------------------
11.00.00.03 - 11/11/11
-----------------------

- NEW - #6902 - Documentation updates.

-----------------------
11.00.00.02 - 11/07/11
-----------------------

- FIX - #6892 - Export to Shapefile was not converting Arc Elements correctly.

- CHG - #6895 - The GIS: tags in the filter file descriptions will no longer use the colon (:) as a delimiter.

- NEW - #6898 - New Method: GetFilterListFromFeatureString

- NEW - #6900 - The Name() tag is now supported by the filter and feature string descriptions to search for Filter Name, Feature Name, Feature Num, Component Name, Component Num, and Style Name by wildcarded strings when selecting filter ids.

-----------------------
11.00.00.01 - 10/29/11
-----------------------

- FIX - #6852 - The Current View Filter on the the Display Filter Dialog was allowing you to change the status of filter ids that were
thresholded off. You shouldn't be able to change these and if you turned them off, it would be confusing since they would disappear at the threshold they should be displayed at.

- NEW - #6853 - Current View Filter will now show the Min and Max thresholds for each filter id.

- NEW - #6864 - Support for embedded data with Dynamic Graphics.

- FIX - #6869 - Complex Linestring would not render the standard linestyle correctly when specified in a style rule.

- NEW - #6884 - Style Definition/Mapping info is now stored in the session, if it is changed.

- NEW - #6885 - Feature Tooltips will now support Dynamic Graphics items.

- NEW - #6886 - New Methods: HighlightSetLinkageInfo and HighlightClearLinkageInfo.

- NEW - #6887 - The Attribute Info dialog will now show Feature Tooltip and Dynamic Graphics info on the Element Tab.

- FIX - #6888 - The GetGisInfoFromFilterId method was not returning the correct information.

- FIX - #6889 - GetDisplayFilterString will now longer return filter ids for group entries.

-----------------------
10.00.00.12 - 9/22/11
-----------------------

- NEW - #6838 - Additional Logging added to QueryInitialize.

- NEW - #6842 - Multi-Category Support for basic Query Types.

- FIX - #6845 - When opening a .gtx file, the style id in the style definitions could be ignored in certain situations.

Friday, September 16, 2011

GTVx version 10.0.0.11 is Available



Version 10.0.0.11 of GTVx is available.

-----------------------
10.00.00.11 - 9/16/11
-----------------------

- NEW - #6783 - New Methods: GetComputedCoordinate, GetSystemX, GetSystemY.

- FIX - #6785 - Setup was naming the shortcut to the documentation as Documentation instead of GTVx Documentation.

- NEW - #6820 - Support for Polygon with Holes in .DFN fonts.

- FIX - #6823 - If a DashPattern has 0 for all of the gaps, then it should be treated as a solid line.

- NEW - #6826 - Support for Feature Tooltips on embedded data to match GTViewer.

- NEW - #6828 - ActivateSelectedElementMoveEx method added so that when a single text element is selected, its style origin will be used.

- FIX - #6830 - DGN Export was not applying filter mappings to the sub-elements of a Group Element.
- FIX - #6832 - Snapping was not working with selected element moves.

- NEW - #6833 - Change to snapping so that if a text element with a style origin is used, the style origin will be used instead of the element's real origin.

-----------------------
10.00.00.10 - 06/23/11
-----------------------

- NEW - #6754 - RestrictPresetExport added as Data Property and to Additional Properties section of the .GTM.

- NEW - #6755 - New Data Properties: MeasureFactor, MeasureDegreeFactor, MeasurePrecision, MeasureUnitLabel

- NEW - #6756 - Print to Scale will now support the Shift-Plus and Shift-Minus not increase or decrease the scale by 5%.

- NEW - #6757 - New methods added: BGMaskChangeBorderWeight, BGMaskChangeBorderStyle, BGMaskChangeBorderColor, BGMaskChangeFillColor, BGMaskChangeFillStyle.

- NEW - #6758 - New method added: DGFit

- NEW - #6762 - If a RasterFileList entry is defined along with a RasterPath entry in a Raster Category section of the .GTM and multiple RasterPath items are specified (delimited by semicolons), each file in the list will be search for in each of the RasterPath directories until it is found.

- FIX - #6765 - Support Added to Feature Tooltip expression for multiple record occurrences.

- FIX - #6766 - Added FT and FT_Pre entries to the Additional Properties section of the .GTM to support Feature Tooltip entries that contain long entries. The FeatureTooltip and FeatureTooltip_Pre entries can only support 200 character per property.

- FIX - #6769 - The DG.GTI_Area variable for the Dynamic Graphics expressions will now compute the area for a Shape with hole element using only the primary shape.

- CHG - #6771 - Thresholds for Highlighted elements behaved differently than thresholds for Filters, Styles, and Dynamic Graphics. They have been changed to match.

- FIX - #6774 - Problem when selecting elements and moving large distances. Element ranges would sometimes get correct because of roundoff error.

- NEW - #6782 - New methods: HighlightedListSave, HilightedListClear, HighlightedListGetItem, HighlightedListSetTag, HilightedListHighlightByTag, HighlightedListGetItemCount.



Thursday, July 14, 2011

Creating GTViewer Data with Embedded Data Using FME

In my last post, I covered programmatically embedding data into Session Graphics with GTViewer and GTVx. This post will also cover Embedded Data, but it will use FME to create it instead of VB6 or VB.NET.

The GTViewer Writer Plug-In for FME can easily create embedded data in GTViewer Data. You must expose two Format Attributes in the destination GTViewer Writer: gti_embeddedData and gti_embeddedDataType.

There is currently only 1 valid Embedded Data Type for GTViewer data, so you can set gti_embeddedDataType to a Constant 1. The gti_embeddedData attribute is then set to the string you want to embed. The \t\a\v format for embedded data that I described in the previous post, can also be used here to format the embedded data so that the Attribute Info dialog in GTViewer and GTVx will recognize the embedded data as if it came from a database.

For an example, I will take a TIGER street file and convert it to the GTViewer format. Instead of letting FME create tabular data in the GTViewer format and link it to the graphic elements it creates (which is the default and is usually the desired process), I will delete the tabular attributes from the destination and use only embedded data.


The StringConcatenator transformer (shown above) is used to build the \t\a\v string. There are many ways you could go about building this string in FME, but this approach seemed the easiest and my visual for a blog posting. In the screenshot below, I simply build the embedded data string using constants and attribute values from the TIGER data. One item to note is that the backslash (\) is an escape operator in this FME transformer, so you need to use two backslashes to represent one (\\), and \t becomes \\t, and so on.

You can convert the data to the GTViewer format and open it up in GTViewer. Then review one of the streets:

If you look on the Element Tab for the reviewed street, you will see the Embedded Data property is set to the string we created with FME. Also note that the Attribute Info tab has a red drum indicating that it is Embedded Data instead of Linked Data.

This example is somewhat contrived since if you were really converting street data, you would almost definitely be using Linked data (the default that the GTViewer FME Writer Plug-in provides); however, there are other cases where embedded data might be very useful.



Programmatically Creating Session Graphics with Embedded Data

When drawing session graphics in GTViewer or GTVx, it is very simple to added embedded data. This is also true if you are using the GTDataObjects, the GTV .NET Controls, or GTCreate (but the syntax is slightly different than what I will show in this post).

Creating Session Graphics in GTViewer or GTVx uses a standard process. First set the Drawing Properties to your desired values, then draw the session graphics element (redline) with one of the Draw methods. The newly created session element will use the Drawing Properties you set.

There are two kinds of Drawing Properties that can be set. First, there are the Current Drawing Properties such as Filter Id, Color Id, Style Id, Weight, Fill, and Extended Style. These properties are set with methods like SetCurrentFilterId, SetCurrentColor, SetCurrentStyle, SetCurrentFill, and SetCurrentExtendedStyle. These properties will remember the value you set until you change them. So, you can set your filter id, color, and weight to specific values and all session elements that you create with the Draw methods will use these properties. You can also set these properties before each call to a Draw method if you choose (it will take slightly longer performance-wise if you set every property before each draw, but probably not enough to worry about).

Instance Drawing Properties are the second kind of Drawing Property. These properties will only be applied to the next session graphic created with a Draw method, then they reset themselves to a neutral state. There are really just two Instance Properties: Linkages and Embedded data. Linkages are two 32 bit integer keys on an element that will be automatically be used to look up records in the tabular data. Embedded Data is a string that is embedded on the session graphics element (and the data is available without going to the database and is also portable if you export the session graphics as a .gtg file).

Embedded Data has both a Type value and a string data value. Currently, the Embedded Data Type must always be set to 1. The Embedded Data String value can be any string value (size is not restricted, but their may be practical limits). However, if the string follows a specific format, it will be interpreted as tabular data and will work seamlessly with the Attribute Info functionality in GTViewer and GTVx. This format is called the \t\a\v format. Not a very catchy name, but it is what it is:

{\tTableName{\aAttrName\vValue}} 

You must have one record (table) specified with \t followed by the table name. You then need 1 or more attribute/value pairs where each pair is \a and the attribute’s name followed by \v and the value. In this format notation, the curly braces mean that that the enclosed portion can repeat, so you can have one or more attribute/values pair per table, and you can have one table or more tables. An example is shown below:

\tPole\aPole_Number\v1234\aHeight\v45\aClass\v1

Would represent:

Table: Pole

Attr 1: Pole_Number=1234

Attr 2: Height=45

Attr 3: Class=1

The following VB6 code is for GTViewer. It will create a filled circle in the center of your view and embed some data on it:

Dim cenX As Double
Dim cenY As Double

viewObj.GetViewCenter 1, cenX, cenY

docObj.SetCurrentFill True
docObj.SetCurrentFilterId 0
docObj.SetCurrentColor docObj.GetNearestColor(255, 0, 0)
docObj.DrawSetData 1, "\tMyTable1\aMyAttr1\vMyValue1\aMyAttr2\vmyValue2\tMyTable2\aMyAttr3\vMyValue3\aMyAttr4\vmyValue4"

docObj.DrawCircle32 1, cenX, cenY, 25

viewObj.RefreshView
This code is for GTViewer, but you can swap the viewObj and docObj with GTVX1 and it will work with GTVx as well. The embedded data contains two tables with two attributes on each table, so if you review the circle in GTViewer, it will show you something like this:

There are a few things to note in the above screenshots. First, the Red Drums on the tabs mean the data is Embedded Data and not retrieved from the database (they show as Blue Drums). The Table Names show on the tab. The first table name will show on the right mouse menu when you review one of the session graphics with embedded data. The Element tabs show the first few characters of the embedded data on the Embedded Data line.

The next example uses VB.NET and GTVx to illustrate something a little more realistic than the first example.

Imports GTVXLib
Imports System.Text


Public Class Form1

Dim docObj As AxGTVXLib.AxGTVX
Dim appObj As AxGTVXLib.AxGTVX
Dim viewObj As AxGTVXLib.AxGTVX

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

AxGTVX1.OpenFile("l:\electgasdemo\electgas.gtm")
AxGTVX1.SetHideRaster(1)

docObj = AxGTVX1
viewObj = AxGTVX1
appObj = AxGTVX1

End Sub


Private Sub ButtonPlaceMarker_Click(sender As System.Object, e As System.EventArgs) Handles ButtonPlaceMarker.Click

Dim cenX As Double
Dim cenY As Double

viewObj.GetViewCenter(1, cenX, cenY)

docObj.SetCurrentFill(True)
docObj.SetCurrentFilterId(0)
docObj.SetCurrentColor(docObj.GetNearestColor(255, 0, 0))

Dim data As New StringBuilder

data.Append("\t")
data.Append("Marker")
data.Append("\a")
data.Append("Time")
data.Append("\v")
data.Append(Now.ToLongTimeString)
data.Append("\a")
data.Append("Data")
data.Append("\v")
data.Append(Now.ToLongDateString)
data.Append("\a")
data.Append("User")
data.Append("\v")
data.Append(Environment.GetEnvironmentVariable("USERNAME"))

docObj.DrawSetData(1, data.ToString)

docObj.DrawCircle32(1, cenX, cenY, 25)

viewObj.RefreshView()

End Sub

End Class


The screenshots below show the demo app running after a marker has been placed followed by the Attribute Info dialog you get when reviewing the session graphics.





There are a few items to note in the above demo app. Again the DocObj and ViewObj are just used to simpify moving the code between GTViewer and GTVx. Since these objects are set to the AxGTVX1 object, the same code will work the same in GTVx and GTViewer. I used a StringBuilder to compose my embedded data. You can just as easily use a regular String instead. I think breaking the lines up with the StringBuilder makes it easier to read as well as being theoretically faster when running (versus just using the immutable String type). This example only uses one Table in the embedded data (the first example used 2).

I hope this helps to clarify using embedded data.