Thursday, December 08, 2016

GTData version is Available

GTData version is available.

There are several significant updates in this version.   GTIndex has had the -gtm option has been available for a while, but it now officially delivered.  It allows you to index all graphics files by simply specifying the .GTM file.

A new utility called GTExtractFiles is also provided to create subsets of the data. It is similar to GTExtract, but it outputs the individual files instead of a .GTX file.  The subsets can be used with GTViewer Data Server and GTViewer for iOS/Android.

Another new utility called GTQueryIdx will create indexes for Locate Queries (.QRY) to speed up performance when running a query.  These indexes are supported by GTViewer 15+ and GTViewer for iOS/Android.

GTFontEdit has had another round of enhancement to improve productivity.

----------- - 12/8/16

- NEW - #7673 - GTFontEdit - Support for MaskElement and ShapeWithHolesElement with the -b2a option (in GTFont).

- FIX - #7689 - GTFont - More tolerant of invalid character definitions. It will now ignore them and continue with next character.

- NEW - #7703 - GT2Shape - The -cf option has been added to manually specify the coordinate factors.

- NEW - #7708 - GTIndex - The -gtm and -cat options have been added so that all parameters can be read from a .GTM file.

- CHG - #7716 - GTUpdateData - GTUpdateData.exe renamed to GTUpdData.exe because Win 7 and Win 10 require UAC dialog when filename have "Update" in them.

- NEW - #7764 - GTQueryIdx - The GTQueryIdx utility has been added.

- NEW - #7779 - GTFontEdit - Snap Points are now shown with an indicator.

- NEW - #7780 - GTFontEdit - Drawing reference lines will now work as snap points.

- NEW - #7781 - GTFontEdit - Backspace key will undo the last point placed in a linestring.

- FIX - #7782 - GTFontEdit - The *, +, and - keys will now work from the number pad and the regular keyboard.

- NEW - #7786 - GTIndex - The -rf option has been added to create range files for each category as the data is indexed.

- NEW - #7799 - GTQuery - The -v1 option now supports Offset and OffsetDB query types.

- NEW - #7800 - GTFontEdit - The number pad 6 will now select all strokes.

- NEW - #7801 - GTFontEdit - Keyboard Shortcut list added to Help menu.

Wednesday, November 23, 2016

GTech Loader version is Available

GTech Loader version

There have been several updates to the GTech Loader.  New features include the addition of Tokens, support for Style Definition Ids  (versus Mapped filter Ids), support for data with hacked G3E_StyleID and G3E_LabelFormat attributes, Alternate Geometry options, and upgrades to the GUI.

----------- - 11/23/16

- FIX - #7795 - If there is a problem testing a View in Oracle, more information is now provided in the error message.

- FIX - #7796 - Using Schema Prefix caused a problem when Validating Views in Oracle caused by #7771.

----------- - 11/17/16

- FIX - #7792 - Tabular record values with non-printable characters were corrupting the Data.txt file.   All non-printable characters are now removed.

- CHG - #7793 - The New and Edit buttons have been hidden on the Group List since they are not implemented at this time.

- CHG - #7794 - The Table Edit Form has been updated to provide more information about the properties.

----------- - 11/15/16

- CHG - #7783 - Default Coordinate Factor 2 X and Y will now default to 100.

- FIX - #7787 - Category Type was not being saved from New Category dialog.

- FIX - #7788 - Select Flag was not being saved from New Category dialog.

- NEW - #7789 - Interactive Status will now show SQL statement (it was already in logfile).

- NEW - #7790 - A newly added category is now automatically selected in the category list.

- NEW - #7791 - Changed default Max Threshold for Generate Categories to 1000.

----------- - 10/12/16

- NEW - #7776 - Style Definition Id Mode added.

----------- - 10/04/16

- NEW - #7772 - Token support on General Setup and command-line.  Tokens are used by certain options like Record Filter.

- NEW - #7773 - Clear Buttons have been added to all three groups of the Global Properties settings.

----------- - 09/23/16

- NEW - #7740 - FilterInfo.ini file is now created to help adjust filter id thresholds automatically.

- FIX - #7768 - Setup Form was not scaling for DPI and the OK and Cancel buttons would get chopped off.

- NEW - #7769 - The General Setup can specify an Alternate Geometry column so that you can manipulate the geometry on a global level.

- NEW - #7771 - Support for styles (G3E_STYLEID) and label formats (G3E_LABELFORMAT) that are not defined in the Metadata, but still define the style or label format.

----------- - 04/15/16

- FIX - #7692 - The Error Log file generated by GUI mode was using the same filename as the normal logfile.

- FIX - #7693 - The logfiles were not being flushed after each entry so items could be lost or the app had to be exited to get full logfile.

- CHG - #7694 - The GUI logfiles have been moved to the Apps settings directory (%appdata%\graphic technologies inc\gtech_loader_10) instead of the app directory.

Thursday, October 06, 2016

GTViewer for iOS version 3.0.38 is Available

An update to GTViewer for iOS is now available.  Version 3.0.38 contains a variety of fixes and new features:

  • - NEW - Google Maps raster support (if you have Google Maps key)
  • - NEW - Raster and Location buttons now change color to show that they are toggled on/off
  • - FIX - Fixed an issue with long press updates from the Projects view
  • - FIX - Date formatting was sometimes wrong when determining if a project was Older
  • - FIX - Rasters would turn off if you downloaded a raster from the raster shortcut menu while rasters were already turned on.
  • - NEW - Support for Query Indexing (.qrx file)
  • - NEW - Logfiles are now viewable/emailable through a long press on the projects menu
  • - NEW - Support for using CenterX/CenterY for custom URL scheme

Monday, August 15, 2016

GTViewer for iOS version 3.0.33 is now Available

An update to GTViewer for iOS is now available.  Version 3.0.33 contains a variety of fixes, but it also contains several major new features and enhancements to existing functionality.  The list below highlights the most important items:

  • Most of the User-Defined Linestyle (UDLS) functionality in desktop GTViewer is now available in the iOS version.  This includes embedded text and symbols on lines, complex dash patterns, and layered linear and text components.  A few examples are shown below:

  • All Dash Pattern rendering has been improved to match the new dash pattern functionality in desktop GTViewer (including standard dash patterns and custom dash patterns defined in style definitions).  On the desktop, the new dash patterns look slightly different (a shift from a Microstation style dash where all endcaps are vertical or horizontal to where all endcaps are oriented to the underlying line).  GTViewer for iOS has always rendered endcaps that are oriented to the line, but the optimization used on the desktop are now used in the iOS version.

  • The Locate XY command will now support XY in the data's coordinate system as well as  Latitude/Longitude coordinates (similar to desktop GTViewer's Locate XY).

  • Previous View has been enhanced to match desktop GTViewer's View History functionality which allows the user to step both forward and backward through the list of view locations and zoom levels.

  • URL Scheme (launching GTViewer for iOS from a URL) has been expanded to support Queries.  The URL Scheme in GTViewer for iOS has always allowed other applications on the iPhone/iPad to launch GTViewer with a URL and locate on a specified coordinate.  This new functionality will now support running a query to locate a feature using an existing query (like the command-line arguments on desktop GTViewer). 

  • Current Location now supports multiple modes (Keep in View, Keep Centered).

  • The Current Location, Previous View, and Raster toolbar icons now support a long press to display commonly used functionality above the toolbar buttons.  You can now do a Long Press on the toolbar buttons instead of navigating through the menus.

Friday, June 10, 2016

GTWeb Server version is Available

GTWeb Server version is available.

----------------------- - 06/10/16

- NEW - #7698 - The DelPic.aspx for GTSpot will now delete the graphics from shared GTSpot information when a GTSpot record is removed from the database with GTSpot Admin.

- FIX - #7699 - Shared Graphic elements with deleted flag set were still being rendered.

- FIX - #7700 - GenerateMapFile was not handling Shared session graphic data properly.

----------------------- - 4/28/16

- NEW - #7697 - The GetProjectList method will now support a token to return all Projects sharing with GTWeb.

----------------------- - 3/29/16

- FIX - #7674 - User defined linestyles were not supporting the blanking flag with embedded text that used TrueType fonts.

----------------------- - 9/30/15

- FIX - #7625 - User defined linestyles were not supported embedded text that used TrueType fonts.

----------------------- - 9/9/15

- NEW - #7619 - Server-side support for the Get Directions option in the client apps.

----------------------- - 8/27/15


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

- FIX - #7611 - Browser Client - After performing a query, going to a map, then going back to the query page and selecting a different query, the prompts would not be correct.

Tuesday, April 12, 2016

GTVx version is Available

Version of GTVx is available.

----------------------- - 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.

Tuesday, March 08, 2016

GTViewer Reader/Writer Plugin for FME 2016 is Available

An updated GTViewer Reader/Writer Plugin for FME 2016  is available.

64 Bit Version

----------- - 02/22/16 

- NEW - #7665 - More logging added for errors on sorting the Tabular index file (.idx).

- NEW - #7666 - Upgraded for FME 2016.

32 Bit Version

----------- - 02/22/16 

- NEW - #7665 - More logging added for errors on sorting the Tabular index file (.idx).

- NEW - #7666 - Upgraded for FME 2016.

Monday, March 07, 2016

GTViewer version is Available

GTViewer version is available.   Most of these updates were to better support the GetImagery Add-On app.

----------------------- - 02/19/16

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

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

----------------------- - 02/10/16

- FIX - #7661 - Toolbox buttons did not update after the Reset To Default After View Update was used.

- FIX - #7662 - Using Display Toggles did not work with the Reset to Default After View Update.

----------------------- - 02/08/16

- NEW - #7660 - ResetToDefaultAfterViewUpdate entry added.

----------------------- - 01/28/16

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

----------------------- - 01/28/16

- NEW - #7656 - Support for Spherical Mercator coordinate system.

GTData version is Available

GTData version is available.  Several minor fixes and additions.  GTFontEdit had several new features added.

----------- - 3/7/16

- FIX - #7630 - GTExtEle - The GTField_Edit_Time field was not being used in the date/time comparisons.

- FIX - #7637 - GTIndex - Zoom Level was not being used correctly for symbols using fixed scales in their style definitions.

- FIX - #7643 - GTPack - If a Supplemental File was used with FeatureTooltip entries or ToolboxEntry entries, and those entries were longer than the threshold that splits them into smaller lines, it would not work and would ignore the entries.

- FIX - #7643 - GTExtract - If a Supplemental File was used with FeatureTooltip entries or ToolboxEntry entries, and those entries were longer than the threshold that splits them into smaller lines, it would not work and would ignore the entries.

- NEW - #7647 - GTCompact - New flag added to clear extended style values in all elements (-clearExtendedStyleFlag).

- NEW - #7667 - GTFontEdit - The Shift-Space will now to an Auto Shape With Hole creation, but will also add all Hole elements (2) as Mask elements (10).

- FIX - #7668 - GTFontEdit - The Shortcut actions for keys '1','2','3','4','5' now automatically go back to the Select mode.

- NEW - #7669 - GTFontEdit - The '0' shortcut will now activate select mode.

- NEW - #7670 - GTFontEdit - The '7' shortcut will select previous stroke.  The '8' will select next stroke.   The '9' will Center strokes on origin.

- FIX - #7671 - GTFontEdit - Problem using the Last Drawn Element functions.

Tuesday, February 02, 2016

Setting your Coordinate System in GTViewer

When defining Coordinate Systems for GTViewer 14+ and GTViewer for iOS/Android, you can use a couple of different Web Sites to find the Parameter String you need.

The Parameter String uses a PROG.4 syntax and is common way to express which coordinate system you are using.

We have been using the Spatial Reference page since we changed the way GTViewer specified the coordinate system:

An alternative web site is

Thursday, January 21, 2016

GTViewer version is Available

GTViewer version is available.

----------------------- - 01/18/16

- FIX - #7652 - The TooltipEntry_Pre entries were not correctly spliting the lines if they were over the size threshold for .GTX files.   The change in #7640 caused this problem for .GTM files too.

----------------------- - 01/13/16

- FIX - #7636 - Zoom Level was not being used correctly for symbols using fixed scales in their style definitions.

- FIX - #7640 - If a Supplemental File was used with FeatureTooltip entries or 
ToolboxEntry entries, and those entries were longer than the threshold that splits them into smaller lines, it would not work and would ignore the entries.

Wednesday, January 13, 2016

Web Apps in GTViewer for iOS version 3

Another new feature for GTViewer for iOS version 3 is the Web App Framework.
It allows GTViewer on the iOS platform to communicate with a Web Server and perform various tasks remotely, then display and save the results locally.  GTViewer for iOS is designed to work without a network connection once the dataset has been downloaded.  There may be times, though, when additional information or processing is needed beyond getting a refresh of the GIS dataset.  When a user is connected, they can now run a Web App to download information such as Outages, Jobs, Crew Locations, etc.  This information can be tabular and/or graphic and can be saved for offline use.  Other applications of this framework include resource intensive tasks like network tracing or other types of analysis.
If we compare GTViewer for iOS's Web App Framework to its Data Collection Framework, there are both similarities and differences.   They both extend functionality, they both use customizable HTML forms for their user input, and they both use a server component in some way.   The Data Collection Framework's biggest difference is that it is geared specifically for the collection of data for features or points on the map.  It also has built-in functionality to handle all of the record synchronization with a GTShare server and Lifecycle management.  The only thing you have to provide is your Data Collection Form.    A Web App, on the other hand, is an open sandbox that will let you implement whatever you want.  There is not a specified task that it is meant to solve, and it has a great deal of flexibility available.   It also requires you to implement the server portion of the Web App.   In some cases, this may be something you already have or something that is not difficult to create, but it could be a significant piece of development depending on your requirements.

In GTViewer for iOS, Web Apps are launched by selecting a feature and viewing the Attribute Information.  If a Web App is associated with a feature, a section will appear at the top of the Attribute Info containing a link to start the Web App.   A Web App Form must be provided with the dataset.  It is very similar to a Data Collection Form in that it is created in HTML and JavaScript and has access to the selected feature’s tabular attribute values.   However, instead of collecting information to save in a Data Collection Record, it is just an interface to the App you will be communicating with on a Server.   It can be simple or sophisticated depending on what options you need to send to the App on the server and how you want to represent the results that are returned.   In its simplest form, it is just a Button to start the app and someplace to display the results (if there are any).


It is probably easiest to understand Web Apps if we look at an example.   A common request for GTViewer for iOS is support for Network Tracing (Gas Valve Isolation, Upstream/Downstream Traces, Fiber OTDR, etc.).  These types of apps could be coded into the GTViewer for iOS base product, but would probably only be applicable to the users they were created for.  Unlike GTViewer for Windows, it is not so easy to create your own external apps on the iOS platform.   There is no VB or C# or built-in extensibility like we are used to in the Windows world.   The Web App Framework attempts to narrow this gap.

Let’s look at a common Electric Trace that finds all Downstream Customers from a selected Primary Conductor.   This is a fairly simple network trace, but it does have some complicated aspects.   We first need a Server App to perform the trace.   For this example, an ASP.NET app using the GTViewer Objects and GTTrace.   The GTViewer Objects are low-level .NET components for reading and using GTViewer data without running GTViewer or GTVx (no display is required).   With a GTViewer dataset, these objects can perform queries, do spatial searches, lookup feature attributes, create .GTG files, and much more.   The GTTrace objects abstract all of the commonly used network tracing functionality making it easier to create network tracing apps.    By using these components wrapped up in a simple ASP.NET application, a web page is created that will accept a Feature’s connectivity Node Ids as a starting point, then it will separately trace in all directions from the starting feature to find a Breaker (to determine the Upstream direction).  The downstream direction is then searched to gather a list of downstream customers.    The results send back to the user includes a list of customer’s, their location, and pertinent attribute information is returned as the Web Apps result's along with a list of highlighted features to identify the upstream and downstream portions of the circuit, the location of the downstream customers, and the breaker.   GTViewer for iOS will take the results from the Web App and let the user browse the list of Downstream Customers (and optionally locate on them in the map), and graphically show the highlighted trace results.

In the example shown below, you select a Primary Conductor in the map.  The Attribute Info is shown.  Since the Primary Conductor feature is associated with a Web App, there is a  a Web Apps section at the top with a Link to the Downstream Customer Trace app:

If you click the Link to the Web App, it will display the Web App Form for the Downstream Customer Trace App.   For this example, the interface to the app is very simple.  There is a Start Trace button and a Results box to display the trace's tabular results:

When you press the Start Trace button, the Web App on the Server is sent a request to perform the network trace using the selected feature's information as the starting point.   When the Server finishes processing, it will send back the trace results and the list of Downstream Customers is shown in the Results box.  

You can scroll through the Results and can select the Locate on each record to Locate that Customer in the map.   You can also press the Highlight button to draw the highlighted trace results on the map.

The Save button in the Trace Results will let you save the results so they can be recalled later.   Saved results do not require a network connection to recall, and both the tabular and graphic data are saved.

This example of a Web App is very specific but any scenario that involves selecting a feature, specifying some options, and displaying tabular and/or graphical results will work.  The capabilities of the Web App interface will expand too in future versions.

Tuesday, January 12, 2016

Data Collection in GTViewer for iOS version 3


Version 3 of GTViewer for iOS includes several major enhancements including a framework for Data Collection. This new feature provides a way to customize GTViewer for iOS (on iPhones and iPads) with your own forms to capture data in the field for any feature or point on the map.  This Data Collection functionality is designed to work offline (no internet connection required).  If the user is connected to the internet, collected data can be posted to a server (GTShare), and data posted by other users can also be retrieved.


Data Collection Forms are created using HTML and JavaScript.  They can be very simple or very sophisticated depending on your needs.   The Data Collection Forms have access to all of the tabular attribute data associated with a selected feature as well as any previously captured data for that feature.   Forms can be associated with one type of feature (such as Pole Inspection or Valve Inspection) or a group of feature types (such as Line Patrol).  Data Collection Forms can also be used at any point on the map (for identifying Missing Features or adding Field Notes).
A Lifecycle is used to manage the Data Collection process.  Each Data Collection Record has a State (Proposed, Unposted, Posted, Completed) which controls what actions can be performed on it as well as driving its symbology (how it appears to the user).  The Administrator can optionally pre-load a set of records for features in a Proposed state.   These records will appear with a certain symbology that indicates that they need to be visited by the user.   If the user edits one of the proposed records or captures new data, the State will be set to Unposted.  When the user syncs with the server, their Unposted records will transition to a Posted state to indicate that they are available to other users.   If new records posted by other users are available at the time of the sync, they will be downloaded (and their state will be Posted too).  Finally, the Administrator can mark any record as Completed, which again changes it symbology and can optionally prevent any further edits to that Data Collection Record.   The Administrator can also delete any records and a sync will remove them from user's data.

An Administrative Tool (GTShare Viewer) is also available to manage the collected records.  It can import, export, modify, delete, compact, backup, and view the collected records.


Once configured, capturing data in GTViewer for iOS is simple.   From any map view, you can select a feature to show its Attribute Information (by tapping on the feature).   If that feature has a Data Collection Form associated with it, it will have a section at the top of the Attribute Info box containing a link called Add Record:

Selecting the Add Record link, will display the Data Collection Form that you selected (you can have more than one form associated with a single feature).  For this example, the link is for a Pole Inspection form:

The Pole Inspection form in this example lets the user verify the Height, Class, and Year the pole was installed.   The fields default to the Pole feature's attribute information from the GIS.   The user can update this information if necessary, leave an optional comment, and press the Save button.  Once saved, a Red Arrow points at the feature to indicate that it has an Unposted record (the State symbology is configurable too).

If a user has network connectivity, they can go to the Data Collection page in GTViewer for iOS and use the Sync with Server option to post any collected data and to retrieve any new information that other users have posted.

Once the collected data is posted, the symbology changes to indicate that it is a Posted record (Green Arrow in this example):

If you select the same Pole again, you will see the data collected in the Pole Inspection section at the top of the Attribute Info.   An Edit Record link is also present if you want to make changes:

The Data Collection options page also provides other useful tools, like the ability to show only records that are in a particular State and to Browse Records. When browsing records, you can locate on the records in the map too:

The Data Collection Framework in GTViewer for iOS is the first feature offering user-customizable functionality on this platform.  The Web App Framework, available in version 3, also provides the ability to add your own customized functionality, but it is more of an open sandbox and not a complete solution.   Together, both of these frameworks will be very important to GTViewer on the iOS platform and will help you get the most our of your investment.