Posted by Chief on Jan 19, 2010 in
Lessons
I’ve discovered that icons given headings in Google Earth KML stopped orienting in the specified heading direction. The result is that when a user rotates the Earth so that true North is not directly “up” on the screen, the angle of the icon is misleading. For wind barbs, this could lead to dangerous decisions being made if the viewport isn’t manually corrected to set up = true north.
There are several known branches of this problem.
One involves the Google Earth browser plug-in:
Apparently, this incorrect handling is the end result of a bug fix to “correct” icon heading behavior.
Google Earth Plug-in – 5.1.3506.3999
(Issue 131) Icon headings should now behave as expected, and consistent with the Google Earth desktop client.
http://www.noeman.org/gsm/mac-other-oses-softwares/106515-google-earth-google-earth-plug.html
More on this bug (affecting version 5.1.x): http://www.google.com/support/forum/p/earth/thread?tid=005bea9c26949e40&hl=en
Work-arounds: GroundOverlay and use a Colada model, both ugly.
Another instance of the icon heading bug:
There is another situation in which the heading of the icon is not obeyed. This occurs when an invalid styleUrl is used in the KML. One recommendation is to remove the “#” character. ex: <styleUrl>#balloonStyle</styleUrl> is no longer correct as of version 5x. I have not confirmed this, but I’ve heard that this is correctly implemented as <styleUrl>balloonStyle</styleUrl>. What happend? This isn’t very backwards-compatible nor user-friendly. Why the change? HTML hashes are logically sound, as they refer to a locally named entity, such as those specified by a style id.
What worked for me was to completely remove the styleUrl when providing a local Style. See below.
Broken:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| <?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>Weather Stations</name>
<description><![CDATA[<p>Generated: 2010-01-19 22:03:45 UTC</p> <p>Only stations reporting <b>within 3 hours</b> are included in this document.</p>]]></description>
<open>1</open>
<Style>
<ListStyle>
<listItemType>radioFolder</listItemType>
<bgColor>00ffffff</bgColor>
<maxSnippetLines>2</maxSnippetLines>
</ListStyle>
</Style>
<Style id="balloonStyle">
<BalloonStyle>
<text><![CDATA[
<h2 style="font-size:1.1em;border-bottom:solid #333 1px;">Instrument:
$[name]</h2>
$[description]
]]></text>
</BalloonStyle>
</Style>
<Folder>
<name>Visibility and Avg Winds</name>
<Style>
<ListStyle>
<listItemType>checkHideChildren</listItemType>
<bgColor>00ffffff</bgColor>
<maxSnippetLines>2</maxSnippetLines>
</ListStyle>
</Style>
<visibility>0</visibility>
<Placemark>
<name>Any Instrument ID</name>
<description><![CDATA[ <p><font color="#999">Sample Date</font></p> <div>Data Table Here</div>]]></description>
<styleUrl>#balloonStyle</styleUrl>
<Style>
<IconStyle>
<scale>3.25</scale>
<heading>0</heading>
<Icon>
<href>http://www.example.com/barb.php?spd=4&dir=74&val=7&col=65280&dia=100</href>
</Icon>
</IconStyle>
</Style>
<Point>
<coordinates>-117.1135,32.3325,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml> |
Working:
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| <Placemark>
<name>Any Instrument ID</name>
<description><![CDATA[ <p><font color="#999">Sample Date</font></p> <div>Data Table Here</div>]]></description>
<Style>
<IconStyle>
<scale>3.25</scale>
<heading>0</heading>
<Icon>
<href>http://www.example.com/barb.php?spd=4&dir=74&val=7&col=65280&dia=100</href>
</Icon>
</IconStyle>
</Style>
<Point>
<coordinates>-117.1135,32.3325,0</coordinates>
</Point>
</Placemark> |
Tags: bug, google earth, heading, icons, mapping, wind barb
Posted by Chief on Nov 23, 2009 in
Scripts, Tricks and Hacks
I was drawing circles using PHP’s GD function imageFilledEllipse. I noticed that when I went to draw a circle having its center at $y=0,there would be a line missing at $y=1.
Here’s the work-around:
if( -1 <= $py && $py <= 1 ) {
// Undocumented PHP bug when Y coordinate is zero.
imageFilledEllipse($img,$px,$py,$X,$X,$color);
imageFilledRectangle($img,$px-$halfX,$py-1,$px+$halfX,$py+1,$color);
} else {
imageFilledEllipse($img,$px,$py,$X,$X,$color);
}
PHP Version:
PHP 4.3.9 (cgi) (built: Apr 1 2009 10:41:42)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ yum search php-gd
php-gd.i386 4.3.9-3.26 installed
Matched from:
php-gd
The php-gd package contains a dynamic shared object that will add
support for using the gd graphics library to PHP.
Tags: bug, fix, gd, imageFilledEllipse, imageFilledRectangle, php