StormLab Customized Overlay File Standards V4.0.4 Overview: Open source GIS (geographic information systems) in StormLab 4.0 allows intermediate to advanced users to easily develop and freely distribute customized overlays for the software. StormLab uses a modified adaptation of the file format initially established by AllisonHouse Inc. LLC. The file specifications are detailed below. Disclaimer: Storm Alert Inc. agrees to display customized overlay files meeting the specified format that follows. Storm Alert Inc. will provide limited troubleshooting for such files, and it is up to the file’s author to ensure that they are in the proper format. The file author assumes all responsibility for the file contents. Users should ensure that they are using and/or distributing data sets that are clearly marked as free access with no copyrights, trademarks or other restrictions. Storm Alert Inc. will gladly cooperate with any persons/companies whose rights have been violated. 1.) File format. a. Files are to be created in Microsoft Windows b. Files should contain only standard characters and punctuation with standard carriage returns/line feeds (here on abbreviated as <CRLF> c. Files should not contain any special formatting other than the specified protocol describe here. d. Files should be placed in the StormLab\OverlayData directory for consistency and troubleshooting purposes. 2.) Data Header Format: Line 1 (Download Only): Refresh: X<CRLF> , where X is the minimum refresh interval of this file, in minutes. This refresh interval is only required by non-local files which are routinely downloaded, such as those for meteorological data. Those generating live data via online PHP scripts or other means should include this tag if it is necessary to limit bandwidth access to this specific file. Line 2 (Optional) Title: TEXT HERE<CRLF> , specified a title for the user to identify the contents of the document. This is for user use only and is not used by StormLab. Line 3 (Download Only) Filename: filename_{SITEINFO}.txt<CRLF> , specifies the local filename for a given customized overlay file. Since local overlay files will already exist on the user’s computer in the \OverlayData directory, this entry is not required for such files. For downloaded data, this filename can be anything, although a .txt extension is recommended for simplicity. If the file is radar-site specific, used to reduce overhead for large file sizes, the user will include the phrase {SITEINFO} in the filename, which is changed upon receipt to that radar site. For example, if a data server is instructed to create a dynamic overlay file for radar site “keax”, then the example Filename: overlaydata_{SITEINFO}.txt would be stored by StormLab as StormLab\OverlayData\overlaydata_keax.txt Line 4 (Optional) Underlay: ANY TEXT<CRLF> , instructs StormLab whether this overlay should be plotted underneath the radar imagery (default is over). VERSION 4.0.1 AND HIGHER REQUIRED. The presence of the "Underlay:" tag will instruct the software to render the data as an underlay. The text after the tag is arbitrary (yes, true, 1, whatever). Line 5 (Optional): IconFile: A, B, C, D, E, F<CRLF> StormLab has the ability to plot icons contained in icon file sheets. An icon sheet is basically a graphics file (such as a .png) containing equally spaced icons. It is encouraged that you use transparent png’s to create your icons, offering the smallest size and greatest flexibility. A = A number indicating a key to reference this icon file later in the document. For the first IconFile: entry in this document, A will be 1. For the second IconFile: entry, A would be 2, and so on. B = The width, in pixels of each icon in the file. C = The height, in pixels of each icon in the file. D = Assuming that 0,0 marks the top/left corner of each icon, this item represents the number of pixels to the right corresponding to the center or rotation point of an icon. The icon will be drawn with this pixel as the center. E = Assuming that 0,0 marks the top/left corner of each icon, this item represents the number of pixels down corresponding to the center or rotation point of an icon. The icon will be drawn with this pixel as the center. F = The website containing your icon file. StormLab will only download the file once, and check it again roughly once an hour to see if its contents have changed. Files are stored in the \Icons subdirectory. For example: IconFile: 1, 22, 36, 4, 35, “http://www.blah.com/icons/stormcell.png" This tells StormLab that the 1st icon file can be found at the website above. It will be stored locally at \Icons\stormcell.png. Each icon is 22 pixels wide and 36 pixels tall. So, if this file contained 3 rows of icons with 4 icons in each row, we should be expecting a filesize that is 88 pixels wide and 108 pixels tall. When plotted, StormLab will position each icon such that the point 4 pixels to the right and 35 pixels down is centered at the location specified in the Object: section later in this document. Line 6 (Blank line) <CRLF> 3.) Drawing Polygons (used to create 2 or more point line segment) Line 1: PolyLine: A, B, C, D, E, F, G, H, I[, J]<CRLF> A = Red color of line (0 to 255) B = Green color of line (0 to 255) C = Blue color of line (0 to 255) D = Pixel width of line (a number greater or equal to 0) E = Drop Shadow (0 for no, 1 for yes) F = Red color of polyline fill (0 to 255) G = Green color of polyline fill (0 to 255) H = Blue color of polyline fill (0 to 255) I = Fill Opacity (0 : transparent to 100: opaque). Zero implies no fill. J = [OPTIONAL] MinZoom = A number specifying the minimum zoom level to display this information. If the final optional setting is missing: (PolyLine: A, B, C, D, E, F, G, H, I<CRLF>) StormLab will use the default minimum zoom setting specified in the Map and Data Overlays portion of the setup for this file. If the final optional setting is present: Values: 1 = This polyline will show up at all zoom levels 2 = This polyline will show up at zoom level 2x and higher 4 = This polyline will show up at zoom level 4x and higher 8 = This polyline will show up at zoom level 8x and higher 16 = This polyline will show up at zoom level 16x and higher 32 = This polyline will show up at zoom level 32x and higher 64 = This polyline will show up at zoom level 64x and higher 128 = This polyline will show up at zoom level 128x and higher For example: PolyLine: 255, 0, 0, 2, 1, 96, 0, 0, 30, 2 would tell StormLab to create a red line that is 2 pixels wide, drop shadowed, and with a 30% opaque fill of dark red. This line will only show up at zoom scale 2x and higher. For example: PolyLine: 0, 0, 255, 1, 0, 0, 0, 0, 0 would tell StormLab to create a blue line that is 1 pixels wide, no drop shadow, and with no fill. Because the last item missing, StormLab will draw this line based on the default minimum zoom settings contained in the Map and Data Overlay settings for this file. Line 2: (Indented 3 spaces for clarity) Lat/Lon: Lat1,Lon1,Lat2,Lon2, etc…<CRLF> Contains all the latitude/longitude pairs, separated by commas that define the polyline. Do not use spaces between the data points. Also, Do not forget to include minus signs for longitudes in the US. NOTE: More than one Lat/Lon: data line may appear in a polyline block to represent discontinuous areas, such as two separate slight risk thunderstorm areas for example. Line 3 (Optional): (Indented 3 spaces for clarity) Text: "Plotted Text"[,X,Y]<CRLF> Contains text to be plotted at each location specified in any Lat/Lon: sections. Text will be plotted using the last found Font: section, or as a default, 8 point Arial font, bold, with the same color as the polyline. X and Y are optional. If present, they represent the offset, in pixels, from the last latitude and longitude to plot this text. X = left/right and Y= up/down. Line 4 (Optional): (Indented 3 spaces for clarity) Title: “TEXT HERE”<CRLF> StormLab can provide a mouse sampled pop-up for each lat/lon pair described above. This sample can contain a bold title, sample text, and a link to additional information online. The sample title in this section tells the user which data point has been sampled, and may be something along the lines of Title: “SPC Day 1 Outlook” Line 5 (Optional): (Indented 3 spaces for clarity) Sample: “This is line 1 of sample text.\nThis is line 2 of sample text”<CRLF> This section contains optional sample text for the pop-up dialog described above. Note the use of the \n characters above. These should be used to specify required line feeds in the popup window. For example, using the title and sample example above, the popup should show: SPC Day 1 Outlook This is line 1 of sample text This is line 2 of sample text Line 6 (Optional): (Indented 3 spaces for clarity) Link: http://www.website.com<CRLF> This section contains an optional website link for the pop-up dialog described above. When clicked, the default Windows web browser will be launched to the listed URL. A good example continuing the above theme would be Link: http://www.spc.noaa.gov/products/outlook/day1otlk.html Line Last: End: Terminates the PolyLine block. 4.) Plotting Icons Line 1: Object:[MinZoom]<CRLF> This tag establishes that the following sequence of data pertains to plotting precreated graphics contained in files located in the StormLab\Icons directory. MinZoom is optional. If present, it must be one of the values below. In this case, StormLab will only proceed in rendering this object at the zoom levels at least as high as this number. 1 = This object will show up at all zoom levels 2 = This object will show up at zoom level 2x and higher 4 = This object will show up at zoom level 4x and higher 8 = This object will show up at zoom level 8x and higher 16 = This object will show up at zoom level 16x and higher 32 = This object will show up at zoom level 32x and higher 64 = This object will show up at zoom level 64x and higher 128 = This object will show up at zoom level 128x and higher Object:16 would tell StormLab to only plot this icon at 16x zoom or higher. This could be very useful in creating progressive zoom objects like roadway icons. Line 2: (Indented 3 spaces for clarity) Lat/Lon: Lat1,Lon1,Lat2,Lon2,etc…<CRLF> Contains the latitude/longitude location(s) at which to render this object. Do not use spaces between the data points. Also, do not forget to include minus signs for longitudes in the US. Line 3 (Indented 3 spaces for clarity) Icon: A,B,CCC,D,E<CRLF> Contains information specific to the icon we are plotting. A: A number specifying the X (east/west) pixel offset to plot this icon from the longitude contained in Line 2. TYPICALLY 0 B: A number specifying the Y (north/south) pixel offset to plot this icon from the latitude contained in Line 2. TYPICALLY 0 C: A *3 digit* number (000 to 359) contained the degrees in which to rotate the icon about its center point. 000 = up/north, 090 = right/east, 180 = down/south, 270 = west/left. Useful for plotting icons such as wind barbs or GPS bearing icons. D: A number specifying which icon file (described back in section 2 – Data Header Format) contains the graphic to be plotted. E: A number specifying which icon in the file described in item D is to be plotted. The icon count starts at 1 in the top/left corner of the file and works toward the right across each row. For example, a file containing 12 icons, 4 in each row would look like: 1 5 2 6 3 7 4 8 9 10 11 12 Line 4 (Optional): (Indented 3 spaces for clarity) Text: "Plotted Text"[,X,Y]<CRLF> Contains text to be plotted at all location(s) specified in the Lat/Lon: section above. Text will be plotted using the last found Font: section, or as a default, 8 point Arial font, bold, black. X and Y are optional. If present, they represent the offset, in pixels, from the last latitude and longitude to plot this text. X = left/right and Y= up/down. An example of where this might be used would be to plot a route number inside an interstate icon. Line 5 (Optional): (Indented 3 spaces for clarity) Title: “TEXT HERE”<CRLF> StormLab can provide a mouse sampled pop-up for each object described above. This sample can contain a bold title, sample text, and a link to additional information online. The sample title in this section tells the user which data point has been sampled, and may be something along the lines of Title: “SPC Day 1 Outlook” Line 6 (Optional): (Indented 3 spaces for clarity) Sample: “This is line 1 of sample text.\nThis is line 2 of sample text”<CRLF> This section contains optional sample text for the pop-up dialog described above. Note the use of the \n characters above. These should be used to specify required line feeds in the popup dialogue. For example, using the title and sample example above, the popup should show: SPC Day 1 Outlook This is line 1 of sample text This is line 2 of sample text Line 7 (Optional): (Indented 3 spaces for clarity) Link: http://www.website.com<CRLF> This section contains an optional website link for the pop-up dialog described above. When clicked, the default Windows web browser will be launched to the listed URL. A good example continuing the above theme would be Link: http://www.spc.noaa.gov/products/outlook/day1otlk.html Line Last: End: Terminates the Object block. 5.) Plotting Text Font: FontName,FontSize,FontBold,FontEffects,R,G,B<CRLF> Anytime a Font: tag is found in the document, the current drawing font will be switched to the information above. FontName = Any usable font name – e.g. Arial FontSize = A number containing the font size – e.g. 9 FontBold = 0 = normal, 1 = bold FontEffects = 0 = none, 1 = dropshadow, 2 = outline, 3 = strong outline R = A number (0-255) containing the red color of the font G = A number (0-255) containing the green color of the font B = A number (0-255) containing the blue color of the font Text: TextOutput,MinZoom,Lat1,Lon1,Lat2,Lon2,etc…<CRLF> Anytime a Text: tag is found, text will be output to the screen, centered on the lat/lon pairs that follow. All Text: tags should be preceded by a Font: tag somewhere in the document (Remember: Arial, 8, bold, black is the default) TextOutput = The text to be output to the screen (could be a city, radar site, airport, whatever) MinZoom = A number specifying the minimum zoom level to display this information. Values: 99 = StormLab will use the default minimum zoom setting specified in the Map and Data Overlays portion of the setup for this file. 1 = This text will show up at all zoom levels 2 = This text will show up at zoom level 2x and higher 4 = This text will show up at zoom level 4x and higher 8 = This text will show up at zoom level 8x and higher 16 = This text will show up at zoom level 16x and higher 32 = This text will show up at zoom level 32x and higher 64 = This text will show up at zoom level 64x and higher 128 = This text will show up at zoom level 128x and higher Lat = A decimal number containing the latitude on which the font should be centered. Lon = A decimal number containing the longitude on which the font should be centered (make sure that you include a negative number Example: Text: My House,64,40.00,-95.00,35.00,-100.00 When a radar image is zoomed in to 64x or higher, StormLab will plot the text “My House” at locations 40N, -95W as well as 35N and -100W FixedText: TextOutput,MinZoom,X,Y<CRLF> Anytime a FixedText: tag is found, text will be output to the screen, anchored to the X, Y coordinates provided. X and Y are pixels to the right down from the top left corner of the screen. This the FixedText tag is not radar site dependent and is useful for plotting fixed text on screen. NOTE: The use of a negative X or Y is permitted and will anchor the text that many pixels from the right or bottom respectively. All FixedText: tags should be preceded by a Font: tag somewhere in the document (Remember: Arial, 8, bold, black is the default) TextOutput = The text to be output to the screen. Commas are permitted. MinZoom = A number specifying the minimum zoom level to display this information. Values: 99 = StormLab will use the default minimum zoom setting specified in the Map and Data Overlays portion of the setup for this file. 1 = This text will show up at all zoom levels 2 = This text will show up at zoom level 2x and higher 4 = This text will show up at zoom level 4x and higher 8 = This text will show up at zoom level 8x and higher 16 = This text will show up at zoom level 16x and higher 32 = This text will show up at zoom level 32x and higher 64 = This text will show up at zoom level 64x and higher 128 = This text will show up at zoom level 128x and higher X = A whole number specifying the number of pixels from the left (right if negative) of the radar window that the text should be plotted Y = A whole number specifying the number of pixels from the top (bottom if negative) of the radar windows that the text should be plotted. Example: FixedText: Chase Targer: Kansas City, MO,1,10,10 Will plot the text 'Chase Target: Kansas City, MO' at all zoom levels. The text will be rendered starting at 10 pixels from the left and 10 pixels from the top (in the upper left portion of the radar screen). Location: TextOutput,MinZoom,Lat1,Lon1,Lat2,Lon2,etc…<CRLF> Anytime a Location: tag is found, text will be output to the screen. Unlike the Text: tag, the location tag will place a dot centered on the lat/lon pairs that follow with the actual text offset from this dot. All Text: tags must be preceded by a Font: tag somewhere in the document. The location dot will also use the same color as the font. TextOutput = The text to be output to the screen (could be a city, radar site, airport, whatever) MinZoom = A number specifying the minimum zoom level to display this information. Values: 99 = StormLab will use the default minimum zoom setting specified in the Map and Data Overlays portion of the setup for this file. 1 = This location will show up at all zoom levels 2 = This location will show up at zoom level 2x and higher 4 = This location will show up at zoom level 4x and higher 8 = This location will show up at zoom level 8x and higher 16 = This location will show up at zoom level 16x and higher 32 = This location will show up at zoom level 32x and higher 64 = This location will show up at zoom level 64x and higher 128 = This location will show up at zoom level 128x and higher Lat = A decimal number containing the latitude on which the location dot should be centered Lon = A decimal number containing the longitude on which the located dot should be centered (make sure that you include a negative number). Example: Location: KEAX,1,38.8103,-94.2478 At any zoom level (1x and higher), StormLab will plot the location KEAX at 38.8103N and -94.2478W, looking sort of like the following. KEAX 6.) Plotting Circles It may become desirable to draw a circle in addition to the polyline feature near the top of the document. Circle: Lat,Lon,Units,Radius,R,G,B,DropShadow,Thickness,MinZoom<CRLF> Anytime a Circle: tag is found, a circle will be drawn on the screen with the following options Lat = A decimal number containing the latitude on which the location dot should be centered Lon = A decimal number containing the longitude on which the located dot should be centered (make sure that you include a negative number). Units = 0 – radius is in nautical miles, 1 – radius is in miles, 2 – radius is in kilometers Radius – The radius of the circle as defined by the Units above. R = A number (0-255) containing the red color of the circle G = A number (0-255) containing the green color of the circle B = A number (0-255) containing the blue color of the circle DropShadow = 0 for no, 1 for a drop-shadowed circle Thickness = The line thickness of the circle MinZoom = A number specifying the minimum zoom level to display this information. Values: 99 = StormLab will use the default minimum zoom setting specified in the Map and Data Overlays portion of the setup for this file. 1 = This location will show up at all zoom levels 2 = This location will show up at zoom level 2x and higher 4 = This location will show up at zoom level 4x and higher 8 = This location will show up at zoom level 8x and higher 16 = This location will show up at zoom level 16x and higher 32 = This location will show up at zoom level 32x and higher 64 = This location will show up at zoom level 64x and higher 128 = This location will show up at zoom level 128x and higher Example: Circle: 39.2,-95.9,0,50,255,255,255,1,3,1 StormLab will draw a circle, centered at 39.2N and -95.9W. The circle will have a radius of 50 nautical miles, be white in color (RGB is 255,255,255), contain a drop shadow, be 3 pixels thick, and be drawn at zoom levels 1x and higher. --------- END DOCUMENT ---------