<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="/blog/oblogstyle/rss.xsl"?>
<rss version="2.0">
<channel>
<title><![CDATA[没钱又丑]]></title>
<link>http://www.gisempire.com/blog/user1/28/index.html</link>
<description><![CDATA[没钱又丑]]></description>
<item>
<title><![CDATA[国家地理2010二月精彩壁纸 28P]]></title>
<link>http://www.gisempire.com/blog/user1/28/20103985442.html</link>
<description><![CDATA[<h1 class="title">国家地理2010二月精彩壁纸 28P</h1>
          
                    <script type="text/javascript"><!--
google_ad_client = "pub-6600685227720911";
/* 468x60, 创建于 09-2-18 */
google_ad_slot = "3503861602";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/1-elephant-seal-sand-xo.jpg" alt="http://www.gisempire.com/blog/象海豹，南乔治亚岛"><br>
<strong>象海豹，南乔治亚岛。</strong>一头雄性南象鼻海豹在鳍状肢挖出的沙子下面纳凉。位于远大西洋的乔治亚岛是英国的远方哨站，也是
数百万只海鸟和海豹的天堂。摄影：Paul Nicklen<span id="more-2514"><script type="text/javascript"><!--
google_ad_client = "pub-6600685227720911";
/* 468x15, 创建于 10-1-24 */
google_ad_slot = "5791705441";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></span></p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/2-orangutan-swing-borneo-xo.jpg" alt="http://www.gisempire.com/blog/红毛猩猩，婆罗洲"><br>
<strong>红毛猩猩，婆罗洲。</strong>在印度尼西亚婆罗洲的丹荣普丁国家公园里一只年轻的红毛猩猩在树与树间跳跃摇荡。摄影：Sean 
Crane</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/3-cedar-waxwing-berries-xo.jpg" alt="http://www.gisempire.com/blog/雪松太平鸟"><br>
<strong>雪松太平鸟。</strong>嘴里衔着浆果的雪松太平鸟。摄影：Christopher Drake</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/4-leopard-seal-swimming-xo.jpg" alt="http://www.gisempire.com/blog/豹海豹"><br>
<strong>豹海豹。</strong>长度可达12英尺（3.7米），重量超过1000磅（450公斤）的豹海豹身躯庞大却柔韧敏捷。它是一种可怕
的掠食动物，嘴边常常沾满了企鹅和其他海豹的血。摄影：Paul Nicklen</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/5-flamingo-foot-xo.jpg" alt="http://www.gisempire.com/blog/火烈鸟的倒影"><br>
<strong>火烈鸟的倒影。</strong>我在明尼苏达动物园拍摄了这张映出火烈鸟侧面倒影的照片。摄影：Andy Kenutis</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/6-damselfly-xo.jpg" alt="http://www.gisempire.com/blog/豆娘"><br>
<strong>豆娘。</strong>如一片小草叶般小的一只好奇的豆娘轻轻地落在我的身边，似乎在说：“我在这儿呢—瞧我多美。”摄
影：Dennis Stewart</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/7-eagles-in-flight-xo.jpg" alt="http://www.gisempire.com/blog/飞行的鹰"><br>
<strong>飞行的鹰。</strong>我在观察一些鹰在博伊西河上捕鱼的时候抓拍到了这两只好斗的家伙。或许它们正在玩“树桩王”的游戏。树桩上
那个家伙的眼神好像在说：“你想都别想！”半空中的另一只则开始驱赶它，我猜它那对老眼中的恶毒眼神这次是不管用了。摄影：Glen Hush</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/8-moose-snake-river-xo.jpg" alt="http://www.gisempire.com/blog/驼鹿，蛇溪"><br>
<strong>驼鹿，蛇溪。</strong>当怀俄明州蛇溪迎来日落的时候，两头驼鹿也结束了一天中最后一顿大餐。摄影：Glen Hush</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/9-hippopotamuses-water-xo.jpg" alt="http://www.gisempire.com/blog/水中的河马"><br>
<strong>水中的河马。</strong>摄影：Anna Ponomareva</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/10-king-penguins-falkland-islands-xo.jpg" alt="http://www.gisempire.com/blog/帝企鹅，福克兰群岛"><br>
<strong>帝企鹅，福克兰群岛。</strong>这些帝企鹅是在福克兰群岛上拍摄到的正处于繁殖期的企鹅的一部分，他们身上尽显耀眼的色彩，我很
喜欢这对成年企鹅展现他们之间亲密关系的瞬间。摄影：Gavin Emmons</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/11-lion-brothers-close-up-xo.jpg" alt="http://www.gisempire.com/blog/狮子兄弟"><br>
<strong>狮子兄弟。</strong>在英国肯特郡赫德康恩镇的野生动物遗产基金会是三头狮子兄弟的家。在搬到野生动物遗产基金会之前三兄弟出生
在沃本野生动物园。野生动物遗产基金会是总部设立于英国的致力于保护大型猫科动物物种的慈善机构。图为一头狮子在饭后为它的兄弟梳理毛发。摄影：Neal
 Lillis</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/12-zebra-huddle-kenya-xo.jpg" alt="http://www.gisempire.com/blog/斑马，肯尼亚"><br>
<strong>斑马，肯尼亚。</strong>几只斑马挤成了一团。摄影：Susan Michel</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/13-lowland-gorillas-nap-xo.jpg" alt="http://www.gisempire.com/blog/低地大猩猩，布朗克斯动物园"><br>
<strong>低地大猩猩，布朗克斯动物园。</strong>这两只低地大猩猩的照片拍摄于纽约市布朗克斯动物园。这是我称作“布朗克斯动物园日记”
的系列照片中的一部分。摄影：Richard Conde</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/14-red-fox-mother-pup-xo.jpg" alt="http://www.gisempire.com/blog/红狐，特拉华州"><br>
<strong>红狐，特拉华州。</strong>在特拉华州的庞贝·虎克国家野生动物保护区，一只红狐母亲在清晨和她的一只幼崽互相触碰对方的鼻子。
摄影：Sean Crane</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/15-giraffe-tall-grass-xo.jpg" alt="http://www.gisempire.com/blog/高草地上的长颈鹿"><br>
<strong>高草地上的长颈鹿。</strong>摄影：Aneta Karnecka</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/16-goat-north-india-xo.jpg" alt="http://www.gisempire.com/blog/山羊，印度北部"><br>
<strong>山羊，印度北部。</strong>在冬季和早春时北印度天气寒冷。这就是人们把他们不再穿的旧衣服穿在山羊身上的原因。摄
影：Svetlana Eremina</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/17-brown-vine-snake-panama-xo.jpg" alt="http://www.gisempire.com/blog/棕腾蛇，巴拿马"><br>
<strong>棕腾蛇，巴拿马。</strong>巴拿马的博卡斯德尔托罗岛上，一条棕腾蛇受到了潜在的掠食者的威胁。摄影：Andrew 
Carrano</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/18-fireflies-ontario-xo.jpg" alt="http://www.gisempire.com/blog/萤火虫，安大略"><br>
<strong>萤火虫，安大略。</strong>这是在安大略乡间，我家附近的萤火虫一个小时中活动的情形。背景中星辰运行的精确轨迹，与萤火虫火光
混乱的图案形成了有趣的对比。摄影：Steve Irvine</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/19-arctic-fox-snow-xo.jpg" alt="http://www.gisempire.com/blog/北极狐"><br>
<strong>北极狐。</strong>北极狐，学名极地银狐，它有着短小的嘴巴和耳朵，皮毛武装到脚掌，还有那浓密的尾巴，这些都使它能够在寒冷刺
骨的环境中生存。照片里北极狐全身雪白的皮毛起到了保护和伪装的功效。它警觉的姿势预示他可能随时飞身离去，然而由于好奇心的驱使使它停留了足够长的时
间，刚好被摄影师捕捉到它那灵动的双眼正谨慎地注视着我们的镜头。摄影：Stephen Oachs</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/20-elephants-etosha-national-park-xo.jpg" alt="http://www.gisempire.com/blog/大象，纳米比亚"><br>
<strong>大象，纳米比亚。</strong>这张照片拍摄于即将迎来雨季的纳米比亚埃托沙国家公园，当时我正在世界野生动物基金会纳米比亚分部实
习。这几只大象当时正驱赶着他们饮水处附近的所有其它野生动物。之后你可以看到，领头的公象进而怪罪到停在一旁的车上。我很喜欢这张照片，因为画面中充满
了动感，你也能感受到被几头大象追逐的感觉变得栩栩如生。摄影：Aaron Price</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/21-frogs-metal-object-xo.jpg" alt="http://www.gisempire.com/blog/青蛙"><br>
青蛙。这是2008年在汉堡的一次简单拍摄，我喜欢这张照片，因为其中蕴藏着如此富足的宁静。尽管如此，它却又像一只拥有自己领地的美丽生灵。摄
影：Joerg Biebrach</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/22-barracuda-bismarck-sea-xo.jpg" alt="http://www.gisempire.com/blog/长梭鱼，俾斯麦海"><br>
<strong>长梭鱼，俾斯麦海。</strong>在巴布亚新几内亚，新汉诺威岛旁边的俾斯麦海中，一群长梭鱼围着一名自然学家游动。摄
影：David Doubilet</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/23-lion-yawning-xo.jpg" alt="http://www.gisempire.com/blog/狮子，南非"><br>
<strong>狮子，南非。</strong>这头南非狮子看起来有点不高兴， 
实际上它正在打哈欠。它的哈欠像连锁反应一样传染到了整个族群。你也在打哈欠吗？摄影：Barbara Motter</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/24-elephant-rainbow-xo.jpg" alt="http://www.gisempire.com/blog/大象，肯尼亚"><br>
<strong>大象，肯尼亚。</strong>桑布鲁国家保护区中的一头大象在彩虹下独自前行，该保护区是肯尼亚北部一块鲜为人知的宝地，那里聚居着
大量的野生动物。摄影：Michael Nichols</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/25-green-praying-mantis-xo.jpg" alt="http://www.gisempire.com/blog/有趣背景中的螳螂特写照"><br>
<strong>有趣背景中的螳螂特写照。</strong>摄影：John Crippen</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/26-mandarin-ducks-national-zoo-xo.jpg" alt="http://www.gisempire.com/blog/鸳鸯，国家动物园"><br>
<strong>鸳鸯，国家动物园。</strong>三只鸳鸯在华盛顿国家动物园的扶手上站成一排，这一幕真是难得一见。鸳鸯属于栖鸭的一种，个头中
等，接近于北美的木鸭。鸳鸯的汉语名叫“鸳鸯”，在东方的艺术创作中有着很重要的地位，常常被视为夫妻间恩爱和忠诚的象征。摄影：Michael 
Schmidt</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/27-humpback-whale-chatham-straight-xo.jpg" alt="http://www.gisempire.com/blog/座头鲸，查塔姆海峡"><br>
<strong>座头鲸，查塔姆海峡。</strong>在阿拉斯加巴拉诺夫半岛附近海域的查塔姆海峡中，一头座头鲸昂然跃出海面。这类体重超过50吨
重，身长足有50英尺的鲸鱼充分展示了它们不可思议的力与美。这个来自深海的庞然大物即将开始他的冬日迁徙之行，前往夏威夷的温暖水域。旅途为期6到8
周。摄影：Coy Aune</p>
<p><img src="http://www.comgeo.net/wp-content/gallery/ngpod2010-02/28-turtle-green-leaves-xo.jpg" alt="http://www.gisempire.com/blog/"><br>
一只被绿叶覆盖的龟。摄影：Ashleigh Thompson</p>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-9 8:54:00</pubDate>
</item>
<item>
<title><![CDATA[Bing Maps进阶系列三：使用地图图像服务（ImageryService）]]></title>
<link>http://www.gisempire.com/blog/user1/28/20103221020.html</link>
<description><![CDATA[<P><FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New">　　地图图像服务（ImageryService）提供了根据地理位置（经度和纬度）坐标和地图的缩放级别解析出对应于地图图片系统的完整地图数据元数据，包括图片映射地址、图片大小等一系列详细参数。通过该服务的服务接口也可以反向实现通过指定地理位置坐标、地图缩放级别和图片大小（高度和宽度）来生成不同的地图图片。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New"><STRONG>一、添加ImageryService的Web服务引用</STRONG></FONT></P>
<P>　　<FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New">微软发布的地图图像服务地址是：<A href="http://dev.virtualearth.net/webservices/v1/imageryservice/ImageryService.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/imageryservice/ImageryService.svc</FONT></A>，在项目中通过该地址添加Web服务引用后就可以使用地图图像服务中的方法进行</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New"></FONT>&nbsp;　　　　　　　　<FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New"><IMG height=573 alt="" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/ImageryService.jpg" width=700 border=0></FONT></P>
<P>　　<FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New">如上图示成功添加地图图像服务（ImageryService）后就可以使用该服务所提供的功能了，可以添加Web服务引用向导过程中生成的WCF客户端配置查看到Silverlight访问该服务的客户端完整配置信息，如下代码：</P>
<DIV class=cnblogs_code>
<DIV><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><SPAN style="COLOR: #000000">&lt;configuration&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;system.serviceModel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basicHttpBinding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;binding name="BasicHttpBinding_IImageryService" maxBufferSize="2147483647"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxReceivedMessageSize="2147483647"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;security mode="None"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;transport&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extendedProtectionPolicy policyEnforcement="Never" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/transport&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/security&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/binding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/basicHttpBinding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;client&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;endpoint address="<A href="http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc">http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc</A>"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; binding="http://www.gisempire.com/blog/basicHttpBinding" bindingConfiguration="BasicHttpBinding_IImageryService"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contract="ImageryService.IImageryService" name="BasicHttpBinding_IImageryService" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/client&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/system.serviceModel&gt;<BR>&lt;/configuration&gt;</SPAN></DIV></DIV>
<P><STRONG>二、Silverlight界面布局设计</STRONG></FONT></P>
<P>　　在Silverlight的界面上提供三个TextBox用于录入经度、纬度和缩放级别值，通过按钮请求调用ImageryService服务接口。</P>
<P><FONT style="BACKGROUND-COLOR: #f5f5f5" face="Courier New"></FONT></P>
<DIV class=cnblogs_code>
<DIV>&lt;Grid x:Name="LayoutRoot"&gt;<BR>&lt;m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map"&gt;&lt;/m:Map&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;Border BorderBrush="Gray" BorderThickness="3,3,3,3" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Margin="3,3,3,3" HorizontalAlignment="Right" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Opacity="0.78"&nbsp; Height="160" Background="#A82D2D2D"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VerticalAlignment="Top" CornerRadius="5,5,5,5"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Vertical"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Horizontal" Margin="3,3,3,3"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="经度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbLongitude" Width="130"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="纬度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbLatitude" Width="130"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="缩放级别："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbZoomLevel" Width="30"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name="btnImageMetadata" Click="btnImageMetadata_Click" Content="获取图片映射地址" Margin="3"&gt;&lt;/Button&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Horizontal" Margin="3,3,3,3"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="映射地址："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbMetadataResult" Width="500"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Horizontal" Margin="3,3,3,3"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="图片高度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbHeight" Width="150"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="图片宽度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbWidth" Width="150"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/Border&gt;<BR>&lt;/Grid&gt;</DIV></DIV>
<P><STRONG>&nbsp;三、调用ImageryService服务获取地图元数据</STRONG></P>
<P>　　地图图像服务（ImageryService）提供了接口实现通过地图位置经度和纬度以及地图缩放级别获取对应于地图图片系统（Tile System）的地图数据的详细信息，包括地图图片对应的Tile映射地址，图片的高度和宽度，请求图片的时间等一些列参数值，通过前面的操作以及成功添加了对ImageryService的Web服务引用，接下来只需要简单的调用服务接口就可以获取到这些数据。</P>
<DIV class=cnblogs_code>
<DIV>private void btnImageMetadata_Click(object sender, RoutedEventArgs e)<BR>{<BR>&nbsp;&nbsp;&nbsp; //构造服务请求对象<BR>&nbsp;&nbsp;&nbsp; var request = new ImageryMetadataRequest();<BR>&nbsp;&nbsp;&nbsp; request.Credentials = new Microsoft.Maps.MapControl.Credentials();<BR>&nbsp;&nbsp;&nbsp; request.Credentials.ApplicationId = "AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU";</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //设置地理位置经度、纬度和地图缩放级别，从界面控件收集值<BR>&nbsp;&nbsp;&nbsp; var location = new Location(double.Parse(this.tbLatitude.Text), double.Parse(this.tbLongitude.Text));<BR>&nbsp;&nbsp;&nbsp; request.Options = new ImageryMetadataOptions();<BR>&nbsp;&nbsp;&nbsp; request.Options.Location = location;<BR>&nbsp;&nbsp;&nbsp; request.Options.ZoomLevel = int.Parse(this.tbZoomLevel.Text);<BR>&nbsp;&nbsp;&nbsp; request.Style = MapStyle.AerialWithLabels;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //构造ImageryService客户端代理对象实例<BR>&nbsp;&nbsp;&nbsp; var client = new ImageryServiceClient();<BR>&nbsp;&nbsp;&nbsp; client.GetImageryMetadataCompleted += (o, args) =&gt;&nbsp; //处理请求的响应接口<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.Error == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var response = args.Result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.tbMetadataResult.Text = response.Results[0].ImageUri.ToString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.tbHeight.Text = response.Results[0].ImageSize.Height.ToString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.tbWidth.Text = response.Results[0].ImageSize.Width.ToString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //发起异步调用<BR>&nbsp;&nbsp;&nbsp; client.GetImageryMetadataAsync(request);<BR>}<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--></DIV>　　　　　　　　<IMG alt="" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/ImageryService1.jpg" border=0></DIV>
<P>　　从上图可看出，通过指定的地理经度、纬度和地图缩放级别参数调用ImageryService服务接口，返回了一个地址“<A href="http://t0.tiles.virtualearth.net/tiles/h1320.jpeg?g=409&amp;mkt={culture}&amp;token={token" target=_blank>http://t0.tiles.virtualearth.net/tiles/h1320.jpeg?g=409&amp;mkt={culture}&amp;token={token</A>}”，该地址就是地理位置（经度：97.1964042859709，纬度：37.5939128813461），地图缩放级别为：4所对应的地图图片系统（Tile System）的地图数据映射Url，通过在浏览器中执行该Url可查看该Url对应的具体图片效果，如下图示：　　<IMG height=535 alt="http://www.gisempire.com/blog/" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/ImageryService2.jpg" width=722 border=0></P>
<P>&nbsp;</P>
<P>　　上面获取到的是带地名的卫星地图，因为设置的样式是：request.Style = MapStyle.AerialWithLabels。可以通过MapStyle枚举设置不同的请求样式，比如要获取道路模式的地图则如下设置：</P>
<DIV class=cnblogs_code>
<DIV><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><SPAN style="COLOR: #000000">request.Style&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;MapStyle.Road;</SPAN>&nbsp;</DIV></DIV>
<P>　　在次通过上面获取卫星地图的地理位置坐标经度和纬度值获取下来的Url为：<A href="http://t0.tiles.virtualearth.net/tiles/r1320.jpeg?g=409&amp;mkt={culture}&amp;shading=hill&amp;token={token" target=_blank>http://t0.tiles.virtualearth.net/tiles/r1320.jpeg?g=409&amp;mkt={culture}&amp;shading=hill&amp;token={token</A>}，其显示效果为下图所示：</P>
<P>　　　　　　　　<IMG height=256 alt="" src="http://t0.tiles.virtualearth.net/tiles/r1320.jpeg?g=409&amp;mkt={culture}&amp;shading=hill&amp;token={token}" width=256 border=0>　　</P>
<P><STRONG>四、调用ImageryService生成图片</STRONG></P>
<P>　　地图图片服务（ImageryService）也提供了服务接口反向实现通过指定地理位置坐标、地图缩放级别和图片大小（高度和宽度）来生成图片。这个服务接口最终将请求转向到一个HTTP处理程序，用来根据不同的参数值生成不同的图片数据，该HTTP处理程序的请求格式：“<A href="http://api.tiles.virtualearth.net/api/GetMap.ashx?c=纬度,经度&amp;w=宽度&amp;h=高度&amp;b=h,mkt.en-US&amp;z=4&amp;token={token" target=_blank>http://api.tiles.virtualearth.net/api/GetMap.ashx?c=纬度,经度&amp;w=宽度&amp;h=高度&amp;b=h,mkt.en-US&amp;z=4&amp;token={token</A>}”。</P>
<P>　　比如我们需要以中国地区地图坐标为准，生成一张地图缩放级别为10，图片高度和宽度为512的一张图片，那么完整的http请求串就应该是这样的：<A href="http://api.tiles.virtualearth.net/api/GetMap.ashx?c=35.0521567883562,100.81816585252&amp;w=512&amp;h=512&amp;b=h,mkt.en-US&amp;z=4&amp;token={token" target=_blank>http://api.tiles.virtualearth.net/api/GetMap.ashx?c=35.0521567883562,100.81816585252&amp;w=512&amp;h=512&amp;b=h,mkt.en-US&amp;z=4&amp;token={token</A>}&nbsp;</P>
<P>　　当然绝大多数情况下我们是不知道这个处理程序的路径的，只有通过调试程序才能发现最终是将请求转向到了此处理程序去完成的生成图片功能。我们在做开发的时候其实只需要关注ImageryService这个WCF服务的调用就OK了。那么要实现生成图片我们可以通过ImageryService所提供的GetMapUri()方法实现，代码如下：</P>
<DIV class=cnblogs_code>private void btnGetUrl_Click(object sender, RoutedEventArgs e)<BR>{<BR>&nbsp;&nbsp;&nbsp; var request = new MapUriRequest(); <BR>&nbsp;&nbsp;&nbsp; request.Credentials = new Microsoft.Maps.MapControl.Credentials();<BR>&nbsp;&nbsp;&nbsp; request.Credentials.ApplicationId = "AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU";</DIV>
<DIV class=cnblogs_code>&nbsp;&nbsp;&nbsp; request.Center = new Location(35.0521567883562,100.81816585252);<BR>&nbsp;&nbsp;&nbsp; var opt = new MapUriOptions();<BR>&nbsp;&nbsp;&nbsp; opt.Style = MapStyle.AerialWithLabels;<BR>&nbsp;&nbsp;&nbsp; opt.ZoomLevel = 4;<BR>&nbsp;&nbsp;&nbsp; opt.ImageSize = new SizeOfint();<BR>&nbsp;&nbsp;&nbsp; opt.ImageSize.Height = (int)imgMap.Height;<BR>&nbsp;&nbsp;&nbsp; opt.ImageSize.Width = (int)imgMap.Width;</DIV>
<DIV class=cnblogs_code>&nbsp;&nbsp;&nbsp; request.Options = opt;</DIV>
<DIV class=cnblogs_code>&nbsp;&nbsp;&nbsp; var client = new ImageryServiceClient();<BR>&nbsp;&nbsp;&nbsp; client.GetMapUriCompleted += (o, args) =&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var response = args.Result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imgMap.Source = new BitmapImage(new Uri(response.Uri, UriKind.RelativeOrAbsolute));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<BR>&nbsp;&nbsp;&nbsp; client.GetMapUriAsync(request);<BR>}<BR>　　上面代码段里使用了imgMap控件，这是在界面上放置的一个Image控件，通过按钮发起ImageryService的服务接口的调用，将返回的串序列为位图数据赋值给Image控件显示出来，其定义如下：</DIV>
<DIV class=cnblogs_code>
<DIV>&lt;Image x:Name="imgMap" Width="512" Height="512"&gt;&lt;/Image&gt;<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--></DIV></DIV>
<P>&nbsp;通过上面的实现最终生成的图片效果如下图所示：　　　　　　<IMG height=512 alt="" src="http://api.tiles.virtualearth.net/api/GetMap.ashx?c=35.0521567883562,100.81816585252&amp;w=512&amp;h=512&amp;b=h,mkt.en-US&amp;z=4&amp;token={token}" width=512 border=0></P>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-2 21:00:00</pubDate>
</item>
<item>
<title><![CDATA[Bing Maps进阶系列二：使用GeocodeService进行地理位置检索]]></title>
<link>http://www.gisempire.com/blog/user1/28/201032205647.html</link>
<description><![CDATA[<P>&nbsp;<STRONG>一、添加GeocodeService的Web服务引用</STRONG></P>
<P>　　地理编码服务（GeocodeService）是以WCF技术发布的一个Web服务，地图编码服务提供了以一个有效的物理地址在地图上匹配其对应的地图地址（既地理经度和纬度坐标）和以地理经度和纬度坐标进行反向匹配物理地址路径的功能。要使用该服务需添加该服务（<A href="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc</FONT></A>）的Web服务引用，如下图：　　　　　　　<IMG height=573 alt="http://www.gisempire.com/blog/" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/GeocodeService.jpg" width=678 border=0></P>
<P>　　从上图可以清晰的看出，该服务提供了两个方法，一个是根据地名检索所对应的地理经度和纬度坐标的，另一个方法实现反向检索地名的功能。通过添加Web服务引用向导IDE工具会为我们自动生成Web服务引用的代理对象等，这些知识点数据Web Service或WCF相关的，这里不详细介绍。</P>
<P><STRONG>&nbsp;二、GeocodeService的结构分析</STRONG></P>
<P>　　我们可以通过查看GeocodeService的客户端代理对象类图知道，客户端的调用只支持异步调用方式，如下图：</P>
<P>　　　　　　　　<IMG height=537 alt="" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/GeocodeService0.jpg" width=699 border=0></P>
<P>&nbsp;地点检索和反向地理坐标检索都只支持客户端异步调用，添加Web服务引用后可通过生成的WCF客户端配置文件查看到客户端调用WCF的相关配置，这里需要注意一点，自动生成的配置有两个服务端点的地址配置，需要人为将其中一个"custom"配置删除，或者在调用GeocodeService提供的方法的时候会出现异常。以下为正确的客户端配置：</P>&lt;configuration&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;system.serviceModel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basicHttpBinding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;binding name="BasicHttpBinding_IGeocodeService" maxBufferSize="2147483647"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxReceivedMessageSize="2147483647"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;security mode="None"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;transport&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;extendedProtectionPolicy policyEnforcement="Never" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/transport&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/security&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/binding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/basicHttpBinding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;client&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;endpoint address="<A href="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc">http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc</A>"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; binding="http://www.gisempire.com/blog/basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGeocodeService"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contract="GeocodeService.IGeocodeService" name="BasicHttpBinding_IGeocodeService" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/client&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/system.serviceModel&gt;<BR>&lt;/configuration&gt;
<DIV class=cnblogs_code>
<DIV><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--></DIV></DIV>
<P><STRONG>三、调用GeocodeService服务</STRONG></P>
<P>　　首先将界面布局设计下，通过一个TextBox来输入地点名称，一个Button来发起服务调用请求并将检索过后的结果（地名对应的地理位置经度和纬度）显示在另外两个TextBox里。界面布局大致如下：</P>
<P><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->&lt;Grid x:Name="LayoutRoot" Width="500" Height="400"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="map"&gt;&lt;/m:Map&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;StackPanel VerticalAlignment="Top" HorizontalAlignment="Right" Background="Gray" Opacity="0.78" Orientation="Vertical" Margin="2,23,2,2"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Horizontal"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="地名：" Margin="0,5,0,5"&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbName" Width="233"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name="btnQuery" Content="搜索" Click="btnQuery_Click" Width="80" Height="30"&gt;&lt;/Button&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;StackPanel Orientation="Horizontal"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="经度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbLongitude" Width="110"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="纬度："&gt;&lt;/TextBlock&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBox x:Name="tbLatitude" Width="110"&gt;&lt;/TextBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Button x:Name="btnQueryReverse" Content="反向搜索" Click="btnQueryReverse_Click" Width="60" Height="30"&gt;&lt;/Button&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/StackPanel&gt;<BR>&lt;/Grid&gt;　　　　　　　<IMG height=440 alt="" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/GeocodeService1.jpg" width=549 border=0></P>
<P>&nbsp;有了上面的界面结构，接下来看看如何实现的根据地名检索所对应的地理位置经度和纬度，这就需要调用GeocodeService所提供的Geocode()方法了。<FONT face="Courier New"><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;btnQuery_Click(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;RoutedEventArgs&nbsp;e)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">实例化GeocodeService客户端对象</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;GeocodeServiceClient&nbsp;client&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;GeocodeServiceClient();<BR>&nbsp;&nbsp;&nbsp;&nbsp;client.GeocodeCompleted&nbsp;</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;EventHandler</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">GeocodeCompletedEventArgs</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">(OnGeocodeCompleted);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">创建一个Geocode检索请求</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;GeocodeRequest&nbsp;request&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;GeocodeRequest();<BR>&nbsp;&nbsp;&nbsp;&nbsp;request.Credentials&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;Credentials();<BR>&nbsp;&nbsp;&nbsp;&nbsp;request.Credentials.ApplicationId&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU</SPAN><SPAN style="COLOR: #800000">"</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">设置检索条件</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;request.Query&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">.tbName.Text.Trim();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">异步调用Geocode服务方法</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><FONT face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;client.GeocodeAsync(request);<BR>}</FONT></SPAN></P>
<P>&nbsp;通过指定的GeocodeCompleted的回调函数来完成调用服务请求的响应结果，这里我将请求的结果地理位置获取到后直接将地图定位到该位置。</P>
<P><FONT face="Courier New"><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;OnGeocodeCompleted(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;GeocodeCompletedEventArgs&nbsp;e)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(e.Error&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GeocodeResponse&nbsp;response&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;e.Result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000">&nbsp;latitude&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;response.Results[</SPAN><SPAN style="COLOR: #800080">0</SPAN><SPAN style="COLOR: #000000">].Locations[</SPAN><SPAN style="COLOR: #800080">0</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">].Latitude;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000">&nbsp;longitude&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;response.Results[</SPAN><SPAN style="COLOR: #800080">0</SPAN><SPAN style="COLOR: #000000">].Locations[</SPAN><SPAN style="COLOR: #800080">0</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">].Longitude;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">显示检索地点的地理位置坐标经度和纬度</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.tbLatitude.Text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;latitude.ToString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.tbLongitude.Text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;longitude.ToString();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">将地图定位到该地理位置并设置地图缩放级别到4级</SPAN></FONT><SPAN style="COLOR: #008000"><BR></SPAN><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.SetView(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Location(latitude,&nbsp;longitude),&nbsp;</SPAN><SPAN style="COLOR: #800080">4</SPAN></FONT><SPAN style="COLOR: #000000"><FONT face="Courier New">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</FONT></SPAN>　　　　　<IMG alt="" src="http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/GeocodeService2.jpg" border=0>　　</P>
<P>如上图输入“china”进行检索，通过GeocodeService服务检索出了china所对应的地理位置的经度和纬度坐标，在程序中将地图定位到了该坐标的4级地图，最终效果就如上图所示&nbsp;</P>
<P>　　GeocodeService也提供了反向检索，既根据地理位置的经度和纬度进行反向检索地名，服务中的ReverseGeocode()方法便是用来实现这一功能的。</P>
<DIV class=cnblogs_code>
<DIV><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><FONT face="Courier New"><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;btnQueryReverse_Click(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;RoutedEventArgs&nbsp;e)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;GeocodeServiceClient&nbsp;client&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;GeocodeServiceClient();<BR>&nbsp;&nbsp;&nbsp;&nbsp;client.ReverseGeocodeCompleted</SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;EventHandler</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">ReverseGeocodeCompletedEventArgs</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">(OnReverseGeocodeCompleted);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReverseGeocodeRequest&nbsp;request&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;ReverseGeocodeRequest();<BR>&nbsp;&nbsp;&nbsp;&nbsp;request.Credentials&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;Credentials();<BR>&nbsp;&nbsp;&nbsp;&nbsp;request.Credentials.ApplicationId&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU</SPAN><SPAN style="COLOR: #800000">"</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">;<BR>&nbsp;&nbsp;&nbsp;&nbsp;request.Location&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Location(</SPAN><SPAN style="COLOR: #800080">36.5540000796318,104.055999666452</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;client.ReverseGeocodeAsync(request);<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;OnReverseGeocodeCompleted(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;ReverseGeocodeCompletedEventArgs&nbsp;e)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(e.Error&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(e.Result.Results.Count&nbsp;</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #800080">0</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GeocodeResponse&nbsp;response&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">&nbsp;e.Result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.tbName.Text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;response.Results[</SPAN><SPAN style="COLOR: #800080">0</SPAN></FONT><FONT face="Courier New"><SPAN style="COLOR: #000000">].DisplayName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show(</FONT></SPAN><FONT face="Courier New"><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">没有检索到该地理位置所对应的地点</SPAN><SPAN style="COLOR: #800000">"</SPAN></FONT><SPAN style="COLOR: #000000"><FONT face="Courier New">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</FONT></SPAN></DIV></DIV>
<P>　　其实说简单点GeocodeService所提供的两个方法就是一个实现根据地名检索对应的地理位置经度和纬度坐标，一个实现根据地理位置的经度和纬度坐标反向检索地名。这在外网GIS应用中是非常有用的，企业内网的业务支撑系统这一功能到不是很有用，通常企业业务系统的业务扩展开发中应用到地图最多的就是地图的呈现，比如将一些网络组织图以GIS的形式呈现出来，让人看着比较直观、清晰，其他扩展全的根据业务需求开发。</P>
<P><A href="http://msdn.microsoft.com/en-us/library/dd877180.aspx" target=_blank><FONT color=#78afd3></FONT></A>&nbsp;</P>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-2 20:56:00</pubDate>
</item>
<item>
<title><![CDATA[Bing Maps进阶系列一：初识Bing Maps地图服务]]></title>
<link>http://www.gisempire.com/blog/user1/28/20103220567.html</link>
<description><![CDATA[<P>　　Bing Maps提供了一组WCF的地图服务，使用这些服务我们可以方便的在自己的应用系统里实现地理位置搜索等相关功能。他们分别是地理编码服务（GeocodeService）、地理图像服务（ImageryService）、路由功能服务（RouteService）和地理搜索服务（SearthService）。</P>
<P>&nbsp;</P>
<P><STRONG>一、地理编码服务（GeocodeService）</STRONG></P>
<P>　　地图编码服务提供了以一个有效的物理地址在地图上匹配其对应的地图地址（既地理经度和纬度坐标）和以地理经度和纬度坐标进行反向匹配物理地址路径的功能。我们可以通过在Silverlight项目中添加该服务到本地项目中就可以使用该服务了。</P>
<P>　　该服务的地址是：<A href="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc</FONT></A>　　</P>
<P>&nbsp;</P>
<P><STRONG>二、地图图像服务（ImageryService）</STRONG></P>
<P>　　Bing Maps所提供的地图图像服务的主要以类和枚举对象组成，用于实现检索图像信息和图片系统的Url映射。</P>
<P>　　该服务的地址是：<A href="http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc</FONT></A></P>
<P>&nbsp;</P>
<P><STRONG>三、路由功能服务（RouteService）</STRONG></P>
<P>&nbsp;　　路由功能服务可以实现多方位的计算地图上的路线指示的功能，比如说实现驾驶路线和地点，旅游航线等。</P>
<P>　　该服务的地址是：<A href="http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc</FONT></A></P>
<P>&nbsp;</P>
<P><STRONG>四、地图搜索服务（SearthService）</STRONG></P>
<P>&nbsp;　　地图搜索服务提供了解析搜索查询服务，并返回查询的结果。</P>
<P>　　该服务的地址是：<A href="http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc" target=_blank><FONT color=#78afd3>http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc</FONT></A></P>
<P>&nbsp;</P>
<P>&nbsp;　　如果您对Bing Maps的基本功能开发还不是很了解，建议先阅读下我的前一系列关于Bing Maps Silverlight Control的基本功能开发的文章《<FONT color=#78afd3>【Silverlight】Bing Maps系列文章</FONT>》，本系列将在《<FONT color=#78afd3>【Silverlight】Bing Maps系列文章</FONT>》的基础上深入介绍Bing Maps所提供的地图服务。</P>
<P>&nbsp;</P>
<P>　　对于Bing Maps的地图服务就先介绍到这里，关于地图服务的更多知识点我会在本系列的后续文章里陆续介绍，想了解更多关于Bing Maps地图服务的知识，请查询：</P>
<P>　　MSDN：<A href="http://msdn.microsoft.com/en-us/library/cc980922.aspx" target=_blank><FONT color=#78afd3>http://msdn.microsoft.com/en-us/library/cc980922.aspx</FONT></A>&nbsp;</P>
<P>　　Bing Maps开发站：<A href="http://www.microsoft.com/maps/developers/" target=_blank><FONT color=#78afd3>http://www.microsoft.com/maps/developers/</FONT></A></P>
<P>　　Bing Maps开发SDK：<A href="http://msdn.microsoft.com/en-us/library/dd877180.aspx" target=_blank><FONT color=#78afd3>http://msdn.microsoft.com/en-us/library/dd877180.aspx</FONT></A></P>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-2 20:56:00</pubDate>
</item>
<item>
<title><![CDATA[电子地图在高速公路中的相关应用]]></title>
<link>http://www.gisempire.com/blog/user1/28/20103121334.html</link>
<description><![CDATA[<p>近年来，随着经济的发展和人口的增长，车和人的矛盾变得越来越尖锐，交通拥挤和阻塞现象日益严重，这势必带动路网建设在软硬件建设方面的突破性发
展，所谓硬件就是公路网，而软件就是智能交通系统。我国高速公路的建设飞速发展,由于数据量的日益增大而给管理上造成很大困难，必然带动智能交通管理系统
（ITS）的发展。发展智能交通，高速公路电子地图--智能交通系统的基础地理数据的建设显得尤为重要。</p>
<p>电子地图是地理信息系统的一种，它具备了地理信息系统的大多数功能。智能交通系统的大部分信息都需要通过电子地图来表示。电子地图能够把数字信号
(包括对数字地图、遥感数字图象及自行数字化采集的数据进行可视化处理后形成的数字信号)和模拟信号显示在计算机屏幕上。</p>
<p>电子地图主要有两方面作用：一是多维地图的静态显示和动态显示作用；二是动态环境下空间数据库与专题数据库的交流作用。两方面相互作用，共同完成
G1S中空间数据视觉化的任务。智能交通中的电子地图作为空间信息特别是交通信息的可视化产品，将交通路线及周围环境以视觉甚至是听觉感受的方式传输给用
户，成为智能交通系统与用户交流的最重要工具，因此，电子地图制作的好坏，直接影响智能交通系统的成败</p>
<p>电子地图主要应用在以下几个方面：</p>
<p><b>车辆跟踪定位</b></p>
<p>利用GPS和电子地图可以实时显示出车辆的实际位置，并任意放大、缩小、还原、换图；可以随目标移动，使目标始终保持在屏幕上；还可实现多窗口、多
车辆、多屏幕同时跟踪，利用该功能可对重要车辆和货物进行跟踪运输。同时可以结合监控摄像头分布信息，调用实时监控录像。</p>
<p><b>出行路线规划和导航</b></p>
<p>由驾驶员确定起点和终点，由计算机软件根据系统中安装的电子电子地图数据，按照要求自动设计最佳行驶路线，包括最快的路线、最简单的路线、通过高速
公路路段次数最少的路线等。由驾驶员根据自己的目的地设计起点、终点和途经点等，自动建立线路库。线路规划完毕后，显示器能够在电子地图上显示设计线路，
并同时显示汽车运行路径和运行方法。</p>
<p><b>应急交通救援指挥</b></p>
<p>监控中心了在接收到求救信息后，需要详细了解事故危害程度，是否有特种物品扩散等信息，可以调用电子地图数据中该地区的地理模型（地形起伏，河流分
布，路网分布），预测特种物品的扩散范围和浓度，交通影响情况，并反映在电子地图的各个图层上。同时派出特种物品处理部门增援，对预测的区域扩散范围进行
人员疏散，并为救援车辆路线诱导，并同时上报上级主管部门，接受指挥控制命令。根据地图数据及救援信息，自动联系相关救援单位，救援人员到场后，则通过与
救援人员的联系，监控中心对事故救援过程全程实时监控，跟踪事故现场动态，发布救援指令，协调各职能部门及救援资源直至完成救援任务为止。救援实施过程
中，监控中心应向现场救援人员提供各种事故现场管制方法和相关道路发布信息的内容，并根据反馈的信息，及时调整信息内容，在电子地图和有关救援计算机上，
显示救援规程。根据气象和事故的现场信息对事故区域进行人员疏散的模拟。从而快速生成应急救援决策方案的专题图( 
交通管制图、各种救援力量的增援路线图、人员疏散模拟图等)。</p>
<p><b>高速公路智能规划与管理</b></p>
<p>在高速公路日常管理中，会积累大量的信息，如果事故发的时间，地点，天气情况等等，可以将这些信息结合电子地图中的三维地理数据（也可以加载到相关
GIS分析平台，如Google 
Earth）从多个角度分析事故发生的原因，进一步预测事故，为相关人员提供预警信息，还可以为相关道路规划建设部门提供第一手的参考资料。</p>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-1 21:33:00</pubDate>
</item>
<item>
<title><![CDATA[GIS 从信息化到领域化]]></title>
<link>http://www.gisempire.com/blog/user1/28/201031212351.html</link>
<description><![CDATA[<p class="MsoNormal"><strong style="">引言</strong></p><p class="MsoNormal">基于作者的一些浅薄经验，调侃式的分析了GIS目前的发展情况——信息化、普及化，也提出了将来必然的发展方向——
领域化、模型化。</p><p class="MsoNormal"><strong style="">前因</strong></p><p class="MsoNormal"><strong style="">通过几代人的努力，GIS终于从抽象的概念逐渐演变为人们所了解和熟悉的技
术。</strong>虽然大众不一定能真切的理解GIS的学科体系和应用范畴，但是人们已经把GIS与电<br>子地图，车载导航，遥感图像联系在了一
起，把这种GIS逐步融入了生活中——出行前查查路线，在地<br>图上寻找感兴趣的娱乐场所，在三维地球上看看我们生活的世界等等。我想，作为
GISers的一员，<br>是应该感谢ESRI的，它推动了GIS行业<br>的发展，也成为了GIS基础平台软件的世界级领袖；当然我们也应该感谢
Google，它把GIS推向了大众应用，使GIS逐渐步入了人们的生活文化之中，极大的促进了整个GIS行<br>业的发展——事实上，我遇到的很多
GIS初级用户都会提及Google，<br>因为Google给他们带来了这种直观而深刻的感受，使他们对GIS也产生了兴趣，从而带来了对GIS的应
用需求。</p><br><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_2_22_1.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="433" width="354"></div><br><br><br><br><p class="MsoNormal"><strong style="">纵观目前国内的GIS行业的发展</strong>，主要分为数据采集\获取
\加工，GIS基础平台研发，GIS应用平台研发，项目应用系统开发等的几种自上而下的行业细分类型，除了GIS基础平台研发外，每个细分阶段都分布着大
量的企业，本来市场份额不大的GIS行业，上千家的企业拥挤在一起，导致了彼此的盈利能力都非常有限。</p><p class="MsoNormal"><strong style="">再看看GIS的应用方向</strong>，我们会发现，目前GIS基本上都是
用于建设政府电<br>子政务和企业信息化，也就是为了响应国家的号召，全力实现办公信息化建设，提高政府、企业工作人员的工作效率，加强公众监督，并更
好的为公众服务，我们把<br>这一过程暂且叫做“GIS的信息化阶段”——让大众和领导们认识到了GIS的存在。</p><p class="MsoNormal"><strong style="">可是为什么现在的这种信息化系<br>统建设中大量引入了GIS作为其中的一
个重要的组成部分呢？</strong></p><p class="MsoNormal">GIS具有很好的展示能力，可以把事与物直观
的展现在地球空间内，而不<br>是以报表的方式抽象的提供决策依据，满足了我们对于视觉方面的需求，因此GIS当仁不让的进入了信<br>息化系统建设
考虑范畴——毕竟我们，包括领导，都是人类，对于直观感有着强烈的需求。</p><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_2_22_2.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="249" width="414"></div><br><br><br><br><br><p class="MsoNormal"><strong style="">那么这么多的GIS应用系统中究竟发挥了GIS的哪些能力呢？</strong></p><p class="MsoNormal">1、基于位置和基于图形的查询定位功能——也就是通过输入要查找的<br>地点名称，或者在地图上画出范围，来查
找到感兴趣的地物，当然了，能查找到，自然也能定位到该地物的空间位置。</p><p class="MsoNormal">2、
兴趣点标注——不论是查询到的兴趣点，还是动态监控的设备设<br>施、事件，给我们直观的显示出这些事物的地理空间分布和移动扩散情况。基于兴趣点标注
这一基本功能，衍生出来很多关联的功能，如兴趣点视屏监控、扩散\流动过程模拟、兴趣点信息显示（包括照片、文字描述、附加的路径分析）等。</p><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_2_22_3.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer; width: 524px;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="444" width="835"></div><br><br><br><p class="MsoNormal">3、最优路径——查找两地之间最佳的行车方案，公交\地铁换乘方案，并考虑时间\距离的最优组合。</p><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_2_22_4.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer; width: 524px;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="446" width="838"></div> <br><br><p class="MsoNormal">4、
专题统计图——将统计要素表现在地图的相应地物之上，为决策者<br>提供直观、科学的辅助信息。针对专题统计，常见的有静态统计图和动态统计图。静态统
计图多用于具有规范性要求，并具备相应的统计数据和统计公式，因此能够<br>按照规范事先制作完成，并以电子地图、纸质地图等多种方式来分发。而动态统
计图，则是根据应用的现势情况，利用已有的数据快速的制作出符合要求的专题图，<br>因此多用于对现势性要求较高的应用系统中。</p><p class="MsoNormal">5、地图缓存——为了加速地图的显示效果，所做的一个处理技术。不<br>论是B\S还是C\S系统，都需要采用
多种<br>技术手段来提高地图的显示效果，例如C\S系统里所采用的数据文件缓存，数据内存缓存等，在这一点<br>上，个人比较欣赏Mapinfo公
司的桌面产品所作的工作，其产品充分的发挥了大数据量下的高效、<br>美观的显示效果；而在B\S系统中，则多为常见的是瓦片图片缓存，采用分辨率为
512*512，256*256进行切块的策略最为常<br>见，这也是为了保证浏览效果，配合上高效的Web服务器来响应大并发用户请求，能够为用户提
供最佳<br>的展示效果。</p><p class="MsoNormal">6、地图量算、添加临时标识等的其他简单功
能。</p><p class="MsoNormal">以上的几点功能是各种系统中最为常见的，而且也是当前大部分系<br>统
对于GIS仅有的一些需求，虽然有一些专业较强的行业，如气象、水利、电力、国土、测绘、应急、<br>物流等，要求GIS具备很强的网络拓扑分析，栅格
分析，空间分析，具备大数据量（包括矢量数据、遥<br>感数据、卫片与航测数据、GPS数据）的管理、动态更新和监控，但是大部分的应用还只停留在以上
一<br>些基本的GIS功能中。</p><p class="MsoNormal"><strong style="">基
于大部分GIS应用系统中仅采用了一些GIS基础功能的现象，我<br>们需要思考一下，究竟是什么原因造成的这种情况？</strong></p><p class="MsoNormal">1、目前正处于GIS技<br>术的普及阶段，也就是前文提到的“GIS的信息化阶段”——让大众和领导们认识到
了GIS的存在。由于GIS还没有完全被大家所认知，在各<br>种专业性行业中没有找到与GIS相契合的解决方案，因此在这个阶段GIS更多的扮演着数
据的展示作用，甚至有人认为GIS是<br>“花瓶”——锦上添花。就这一点，我是部分认同的，不过我认为现在的应用系统建设中引入GIS技<br>术，
也为大型的业务系统带来了新的建设方向和系统方案，成为了业务系统的新亮点，也算是为其带来了新的价值。</p><p align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_2_22_5.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="312" width="416"></p><p align="left"> </p><p class="MsoNormal">2、目前的GIS理<br>论与行业业务之间的结合点不多，也就是说在很多专业性行业中没有能够把GIS理论结合进
去。除了传<br>统的测绘、国土等，GIS理论的研究范畴更多的集中在了基础的数据结构、分析算法等狭义的GIS领域范畴，即便是有部分研究是针对行业
GIS应<br>用的，也更多的是以论文的形式出现，而没有付诸实施。</p><p class="MsoNormal">3、
GIS基<br>础平台软件和应用平台软件都不完全具备与行业业务深入契合的能力。很多GIS应用平台都是直接基于<br>现有的GIS基础平台构建的，
虽然针对行业特点建设了可复用的应用平台，但是很多行业需要更加深入<br>的GIS功能，甚至是要定制GIS功能的，<br>此时，仅仅依靠上层的应用
平台来满足这种需求是很困难的，也就是说不完全具备于行业业务深入契合的能力。而对于GIS基<br>础平台来说，问题也是同样存在的，用户需要定制的
GIS平台来满足行业领域内的特殊需要，不过平台<br>厂商不能为每家用户都做定制开发的，这里就产生了矛盾。（因为除了定制外，由用户自身来实现相关
的模型和算法是较为困难的，一方面是用户自身没有这种能<br>力，另一方面，大部分的GIS平台没有提供良好的机制来促成这种可扩展的实现方式。但是我
们又都知<br>道，ESRI提供了ModelBuilder，<br>这就是一种比较好的扩展机制，后文我们再详细讨论这套机制。）</p><p class="MsoNormal">4、人为因素。人是内因，也是外因，过于复杂，这里不做讨论。</p><strong style="">那么我们该如何改善这种情况<br>呢？<br></strong><p 21pt;="" margin:="" 0cm="" 0pt;="" class="MsoNormal">为了进一步加强用户对于GIS的<br>应
用需求，使GIS能力得到充分的应用和体现，在大众化普及道路和专业化应<br>用方向上走的更远，更<br>好，我们有必要对GIS现状做一些调整和改
善。</p><p 21pt;="" margin:="" 0cm="" 0pt;="" class="MsoNormal"><strong style="">首先是宏观层面的政策调<br>控与推<br>动</strong>，尤其是在我<br>国，宏观政策指引着产业的发展方向。引用一张
源自网络的图表——物联网，借用这幅图表，我想说明<br>的是物联网这个产业，或者现在更多的是一个概念，经过IBM“智慧地球”的推介，经过国家物联
网技术产业联盟的促进，我国的物联网产业也开始兴起，其中包<br>含的感应<br>器、全球定位也许会火一把，GIS也能在其中凑凑热闹。</p><p 21pt;="" margin:="" 0cm="" 0pt;="" class="MsoNormal">同样的，对于GIS来<br>说，当前
受益于政府电子政务和<br>信息化办公的政策，那么将来还需要政府推出精细化、专业化办公的宏观政策或者建议，来进行下一轮的信息化系统建设或者系统更<br>新，
这样将再一次推动<br>GIS行业的发展——也促进了很多软件开发商的市场，适于“扩内需”的宏观调<br>控政策。</p><br><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_02_26_1.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="291" width="403"></div><br><br><br><br><p 21pt;="" margin:="" 0cm="" 0pt;="" class="MsoNormal"><strong style="">其次，就需要GIS行业<br>中
各个企业各显其能，实现创新，不断的拓展行业市场和行业应用了。</strong>创新是无边界的，以下列出我认为可以做到的几点内容：</p><p -18pt;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">1、<br>
 盈利模式的转变——不同的盈利模式决定了GIS企业<br>在产品、技术、市场、资金等方面的运作和规划，所以放在第一位来讨论。GIS行业盈利的方式<br>有
这样<br>几种，卖数据，卖软件，做项目，做咨询，还有就是在线地图+广告。可以说除了咨询和运营这种具备高<br>附加值的盈利模式赚钱能力较强<br>外，
其他的盈利模式都是在拼企业员工的血与汗，只有通过压榨员工的价值才能实现盈利——很悲惨。对于转变盈利模式，企业家们<br>都希望转变到网络在线<br>运
营，以持久而垄断的方式获得收益，不过能做到这一点的企业屈指可数——有Google <br>Map、Microsoft Bing <br>Map、
Baidu Map在，其他家的地图网站我们用的并不多，市场占有率较低，不是说其他家的运营企业不知名，关键<br>是我们被先入为主了，因此<br>想
抢占这个市场是需要很强的实力及差异化竞争优势的。另一种转变就是做软件咨询服务，类似于IBM、Oracle、埃森哲等公司，不过我们更专注于GIS<br>方
面的技术应用，不仅仅是关心地图显示、查询兴趣点等基本应用，这就需要我们做好行业拓展和行业深入应<br>用了，仅就这一点来说，现在很多大型项目都<br>需
要有专业的公司来提供咨询服务，确保系统开发的可行性，并且深化和明细用户的需求，所以这是一个比较理想的盈<br>利方向。第三种转变，比较有意思，<br>很
多国内GIS公司正在或者即将要做的事情——搞投资，做房地<br>产，用充裕的流动资金换固定资产，然后等待固定资产升值，最后等待新一轮的资金注<br>入……
只不过苦了企业的员工们，只能望梅止渴，画饼充饥了。总而言之，GIS公司盈利方式的转变要结合公司本身的特点，相关联的资产、产品、人力资源情<br>况，
慎重而为之。</p><p -18pt;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">2、 <br>结合最新的软硬件技术，提供更加丰富多样的表现形式。先引用一则报道，
（TED2010：下一代的地图技术在微软而非Google）<a href="http://news.3snews.net/technology/20100219/7897.shtml" target="http://www.gisempire.com/blog/_blank"><font color="#0000ff">http://news.3snews.net/technology/20100219/7897.shtml</font></a>，<br>并
附上演示的视屏。当前的GIS是通过展示能力获得我们青睐的，因此GIS应该继<br>续发挥这一方面的优势，在表现形式上有所创新和突破，将虚拟现<br>实、
传感器、触摸屏等技术更好的结合在一起，为GIS应<br>用提供坚实的展示基础。</p><p -18pt;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">3、<br> 
GIS平台软件具备良好的松散架构，极佳的扩展性和复用性，高度的稳定性和易用性，保证在未来的云计算市场中处于<br>优势——这是针对于那些做基础<br>平
台和应用平台的企业来说的。松散的架构形式和良好的扩展性、开放性，能够使我们针对特定行业的特点，提供易于配置和维护的GIS扩展模块，从而极大的促<br>进
GIS与各行业展开更<br>加深入的合作，提供更加专业的应用和服务。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">如<br>果GIS企业希望<br>做有关GIS产业的运营服<br>务，
又不希望直接与Google Map等在线地图产品正面抗衡，那么一个具备松散架构，并且高度<br>可扩展的系统<br>或许能成为差异化的竞争优势。
Google实现的是客户端多样化的应用，而现在ESRI ArcGIS Online则是提供了后台GP的<br>扩展机<br>制，GP又具备很好的
复用能力，这对于深入化应用和差异化竞争来说都是优势。最近ESRI与Amazon合作有关云计算方面的内容，可<br>以说<br>ESRI已经着手准
备在GIS行业领舞<br>云计算了。不过对于卖平台做项目的盈利模式来说，平台软件松散的架构形态，良好的扩展性和复用性，高度的稳<br>定性和易用
性也是极具竞争优势的。这里所说的松<br>散架构与可扩展性是一致的，也就是说在松散的软件架构基础上提供良好的扩展机制，使每个扩展都能复<br>用
和分发，最好实现类似知识库形式的扩展库，提供给广大<br>的用户和开发商使用，一方面降低开发成本，另一方面让有能力的爱好者自由开发——类似于<br>Andriod
的2万多个应用程序，有多少是Google自己开发的<br>呢。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">那<br>么究竟该如何设计<br>这样的平台呢？就目前的市场产品来
看，ESRI产品已经有些体态庞大了，虽然可以<br>做AO开发，VBA开发，GP扩展，虽然即将推出更全面和完善的<br>ArcGIS 10，<br>但
是这个产品总体架构没有大的变化，不具备松散结构的特点，给我们的舞台太窄；PB MapInfo一<br>直没有提供扩<br>展机制，这里不做讨论，
而InterGraph、GE SmallWorld等产品，由于笔者一直没有研究过，更是不能讨论的。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">有<br>意<br>思的
是，反倒是国内的两家平台厂商MapGIS和SuperMap都<br>相继提出了类似的概念，MapGIS推出的“K9悬<br>浮倒挂式体系架构<br>技
术”，利用组合、拆卸、搭建等方式实现项目应用的快速开发——虽然对于其他的开发商来说还是有点难用，这对于MapGIS这种以做项目为主的平台厂商来<br>说
是个很明智的选择，它可以利用自身已有的可复用插件，通过配置、搭<br>建的方式实现快速系统开发，最大限度的降低成本，这在国内是很重要的，抢项目<br>就
是血拼成本。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">而SuperMap推出的“6R二三维一体化”概念着重<br>体现了二三维数据的一体化管理与展<br>示，
不过看过其架构体系后，还是让我们眼前一亮——全系列的微内核体系，架构松散，易于扩展。由于其整体软件平台是构建<br>在微内核架构基础之上的，<br>也
就是说包括底层内核技术也是微内核+插件扩展实现的，上层C/S和B/S产品也是这样的设计理念，因此对于我们这<br>样的技术爱好者来说，完全可以<br>动
手开发自己的模块和产品——条件是SuperMap的二次开发依旧<br>易上手。不过一个新问题出现了，就是采用微内核架构的产品性能是否可以得到保<br>障？</p><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_02_26_2.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="284" width="430"></div> <br><br><br><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">在<br>软件架构层面上，<br>个
人比较倾向于SuperMap提出的这种“微内核架构”，这种架构形式对于随需<br>而变的系统项目建设，对于网络运维服务——特别是适应未来云计算<br>时
代中用户个性化服务与专业化服务来说，都打下了一个很好的基础。</p><p -18pt;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">4、 <br>简易的建模工具。这是结合第3点所提到的松散架构，<br>高度扩
展性来说的。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">谈<br>到建模工具，一定<br>要提及ESRI <br>ModelBuilder——绝对体现
了ESRI在GIS行业中的技术与理念领先优势。当遇到GIS工作流较为复杂，模型需要复用的时候，我们就需要充分<br>发挥该工具的能力，利用
ESRI提供的功能接口，通过可视化的手段快速构建可复用的GP模<br>块和模型。</p><p 0cm;="" margin:="" 0cm="" 0pt="" 39pt;="" class="MsoListParagraph">而<br>这<br>里所谓的建模工具，应该借鉴ESRI 
ModelBuilder的工作流建模工作，并在基础之上<br>实现建模与可扩展插件（热拔插）一体化配置、管<br>理、发布，从而使得非专业用户也
能够快速的建模并发布——对于云计算应用来说显得尤为有用，大家都可以为自<br>己定制专业服务。</p><div align="center"><img src="http://images.cnblogs.com/cnblogs_com/dulvyizhihua/2010_02_26_3.png" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;" border="0" height="191" width="398"></div><br><br><br><p 21pt;="" margin:="" 0cm="" 0pt;="" class="MsoNormal"><strong style="">最后，人为因素显得也很<br>重
要，<br>我们要充分发挥人的主观能动性，推动和推进GIS向更深层次，更专业化的方向发展，而不是一味的追<br>求普及化所带来的微薄收益。</strong></p>推动产业的发展不是一两个人的事，需要的是良好的社会环境和氛<br>围，需要的是和
谐的社会，我们<br>一起努力吧。<br>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-1 21:23:00</pubDate>
</item>
<item>
<title><![CDATA[维基百科 (wikipedia)数据下载(含地理数据)]]></title>
<link>http://www.gisempire.com/blog/user1/28/201031211524.html</link>
<description><![CDATA[<p><a href="http://zh.wikipedia.org/">维基百科</a>的资料非常不错，所以准备下载一些下来，本来以为都要自己
抓取，但结果维基百科自己开放了所有的数据给你下载，具体可以参见这个页面：</p>
<p>维基百科的开放的态度是出乎我的意料的：</p>
<p><a href="http://zh.wikipedia.org/wiki/%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91">维
基百科</a>提供所有完整内容的电子档案给有兴趣的使用者。这些资料可以被重复使用，当作<a href="http://zh.wikipedia.org/wiki/%E9%8F%A1%E5%83%8F%E7%AB%99%E9%BB%9E">镜
像站点</a>，或是个人使用，或是资料备份，或是分析。所有<a href="http://zh.wikipedia.org/wiki/%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91">维
基百科</a>文章都在<a href="http://zh.wikipedia.org/wiki/Wikipedia:CC">知识共享 
署名-相同方式共享 3.0协议</a>下发布，图片以及其他档案则可能以其他的<a href="http://zh.wikipedia.org/wiki/%E8%A8%B1%E5%8F%AF%E8%AD%89">许可证</a>发
布，详情参见<a href="http://zh.wikipedia.org/wiki/Wikipedia:%E7%89%88%E6%9D%83%E4%BF%A1%E6%81%AF">Wikipedia:
版权信息</a>。</p>
<p>当然，这样的开放是基于知识共享协议的，并且其中没有商业限制这一条。</p>
<p>大家可以去<a title="http://download.wikimedia.org/zhwiki/latest/" href="http://download.wikimedia.org/zhwiki/latest/">http://download.wikimedia.org/zhwiki/latest/</a>下
载最新的中文版的维基数据，其中前面几条的xml为最终的数据，不过这个xml仅仅包含了文字内容，并且是非常简单的文字内容，就像是简介一样，不是完整
的页面。其余的压缩包的大多为数据库数据，当然这些数据库包含了页面信息文件信息等，由于太大我没有下载全部。顺便看了一下中文维基和英文维基的xml文
件的大小，296M vs 2.6G，说明数据的差异有多大？由此可见我的<a href="http://sharesh.cn/">分享上海众包计划</a>没
有进展也算是正常了。</p>
<p>我年前下载了2月2号的xml数据，今天最新的xml数据增加了3M。过年无聊就写了几行python语句，然后处理成了数据库，现在提供给大家下
载。总数据条数为65536条，分成三栏数据，第一栏是名称，第二栏是维基百科的网页链接，第三栏是简要的说明，效果如下：</p>
<p><img title="image" style="display: inline; border-width: 0px;" alt="image" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/wikipedia_7D61/image_6.png" border="http://www.gisempire.com/blog/0" height="246" width="604"></p>
<p>文件已经放在我的Google docs上了，不再限制文件类型我当然就用Google的作为免费下载空间了。地址：<a title="http://goo.gl/FZST" href="http://goo.gl/FZST">http://goo.gl/FZST</a>
 (mdb格式，解压缩后86M) <a title="http://goo.gl/9Oei" href="http://goo.gl/9Oei">http://goo.gl/9Oei</a>
 (xls格式，解压缩后17M)。</p>
<p>等等，还没有结束，再给大家送上一份维基百科的地理数据，就是带地理坐标的维基百科数据，啥时候下载的已经忘记了，哪里下载的也已经没有地址了，现
在共享出来。要知道，这是一份全世界的地理数据哦，虽然从kmz文件来看只有6.5M，但如果解压缩出来的kml文件实际上为122M，如果你的电脑配置
不够好，使用Google 
Earth加载这份数据基本上没戏，反正我是没有加载成功过，我只有通过其他软件打开，然后可以挑选出一部分数据来。从文件的日期上能够看到这个是08年
初的一份数据，不知道原作者是如何提取出这份数据的，这份数据基本上就是Google Maps或Google 
Earth中显示的维基百科数据的离线版，不知道大家有什么好的方法下载维基百科的地理数据呢？我倒是想下载一些。而这份08年的数据实在是比较差的，可
能和当时的维基百科数据量有关吧，但中国地区和国外地区的数据量差异也蛮大的，中国地区的差不多就只是一些城市的数据了，而城市内的位置信息(地标、公
园、大厦甚至公司等等)基本上没有，其他国家的数据相对要比我们详细一些，看看中国的大城市上海的数据的稀疏程度就知道这是有多么的悲哀了：</p>
<p><img title="image" style="display: inline; border-width: 0px;" alt="image" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/wikipedia_7D61/image_5.png" border="http://www.gisempire.com/blog/0" height="274" width="604"></p>
<p>好了，下载地址：<a title="http://goo.gl/HuMy" href="http://goo.gl/HuMy">http://goo.gl/HuMy</a>
 文件名为：Wikipedia_en_2008-03-12.kmz。</p><div id="MySignature"><p><a href="mailto:tfljh@163.com">Rover.Tang</a><br>
<a href="http://tangf.cnblogs.com/">http://Tangf.CnBlogs.Com</a><br>
<a href="http://photo.sharesh.cn/">http://www.ShareSh.cn</a></p>
</div>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-1 21:15:00</pubDate>
</item>
<item>
<title><![CDATA[Geography V.S. Geometry]]></title>
<link>http://www.gisempire.com/blog/user1/28/20103121628.html</link>
<description><![CDATA[Geography 和 Geometry 其实是Sq lServer <br>2008支持的两种空间数据类型Spatial。Geography指
的是球面的数据，而Geometry指的是平面数据。类比一下，Geography<br>的数据都是在<strong>地球仪</strong>上，Geometry
的数据都是在<strong>平面地图</strong>上（比如<br>Google Maps）。但就理解投影问题来看是通用的，并不局限于Sq 
lServer 2008。<br><img src="http://d.imagehost.org/0514/ec580fb3daeee893d8335a6c.jpg" onclick="http://www.gisempire.com/blog/javascript:window.open(this.src);" style="http://www.gisempire.com/blog/cursor: pointer; width: 524px;" onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;"><br><img src="http://e.imagehost.org/0571/rr.png"><br>]]></description>
<author>没钱又丑</author>
<pubDate>2010-3-1 21:06:00</pubDate>
</item>
<item>
<title><![CDATA[Get to know ArcGIS for iPhone at the Developer Sum]]></title>
<link>http://www.gisempire.com/blog/user1/28/2010224114954.html</link>
<description><![CDATA[<p>The iPhone has shaken up the smartphone industry. It’s a powerful, 
flexible and connected platform, and we’re really excited to be bringing
 you tools at ArcGIS 10 to help you make the most of it.<a href="http://blogs.esri.com/Dev/photos/2007_mobile/picture11562.aspx" target="http://www.gisempire.com/blog/_blank"><img src="http://blogs.esri.com/Dev/photos/2007_mobile/images/11562/258x480.aspx" align="http://www.gisempire.com/blog/right" border="0" width="212" height="385"></a><br><br>There 
will be three sessions at the 2010 DevSummit aimed specifically at 
getting you up-to-speed on our iPhone work, so if you want to find out 
what you’ll be able to do with the API and with our iPhone application, 
try to fit these into your schedule.</p><p><b>Day 1</b></p><p>At 4:30pm 
(the last timeslot) on Day 1, <b><a href="http://events.esri.com/bpc/2010/dev_agenda/index.cfm?fa=Session_Detail_Form&amp;SessionId=35&amp;ScheduleId=119">A
 Developer’s Guide to Mobile GIS</a></b> will introduce you to 
developing with ESRI’s mobile products, covering ways to build your own 
mobile apps as well as how to configure the out-of-the-box apps. It’ll 
provide your first insight into our iPhone offerings and will encompass 
both iPhone and Windows Mobile development.<br><br><b>Day 2</b></p>At
 2:45pm, Using and Configuring ESRI’s Mobile Technology will discuss 
authoring and publishing mobile web maps (which applies to both Windows 
Mobile and iPhone) before talking more specifically about the 
out-of-the-box applications we provide.<br><br>You’ll be able to stay in
 your seat after that for <b><a href="http://events.esri.com/bpc/2010/dev_agenda/index.cfm?fa=Session_Detail_Form&amp;SessionId=18&amp;ScheduleId=147">Developing
 Applications with the ArcGIS for iPhone API</a></b> which will show you
 how to use our new API to build custom iPhone (and iPod Touch) apps 
making use of ArcGIS Online or your own ArcGIS Servers.<br><br>If you 
have to skip Developing Applications with the ArcGIS for iPhone API, you
 can catch it again on <b><a href="http://events.esri.com/bpc/2010/dev_agenda/index.cfm?fa=Session_Detail_Form&amp;SessionId=18&amp;ScheduleId=197">Day
 3</a></b> at 1:30pm (and remember that we’re recording all our sessions
 putting them online after the DevSummit).<br>How is your iPhone 
programming?<br><br>We hope you’ll find these sessions useful and we’re 
looking forward to showing you what we’ve been up to with iPhone and 
ArcGIS Mobile. If you’re planning on making use of our new iPhone 
products, please spare a minute to take the poll and let us know about 
your experience in iPhone development.<br><br>Mobile Team]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-24 11:49:00</pubDate>
</item>
<item>
<title><![CDATA[Firefox 3.6版本被证实确实存在0day漏洞]]></title>
<link>http://www.gisempire.com/blog/user1/28/2010224112824.html</link>
<description><![CDATA[<p><strong>俄罗斯安全公司 Intevydis公司对Windows操作系统下的Firefox3.6版本实施了零日漏洞攻击测试。</strong>据
悉，Windows操作系统下的Firebadger 
3.6浏览器软件带有一个尚未明了的系统漏洞，该系统漏洞可以使得黑客远程获得对安装Windows操作系统的个人电脑实施控制。</p>
		俄罗斯安全公司Intevydis 公司宣称，安装VulnDisco 
系统插件Canvas漏洞测试软件可以检测出这一漏洞。Intevydis 公司的软件程序员叶夫根（Evgeny 
Legerov）在公司在线论坛上宣称Windows 
XP(SP3)和Vista版本上的Firefox3.6安全漏洞可被黑客稳定利用。叶夫根同时宣称，他对发现应用软件的“缓冲区溢出”漏洞并利用这些漏
洞进行远程攻击乐此不疲。<br>
<br>
Firefox软件的开发者Mozilla基金会已经得知该系统漏洞的存在，但到目前为止，Mozilla基金会仍未对该程序漏洞给出官方说明，也未对
Firefox3.6版本发布程序修订包。Secunia公司宣称，该系统漏洞问题相当严重。]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-24 11:28:00</pubDate>
</item>
<item>
<title><![CDATA[周鸿祎：创业要学会与别人合作，不听劝者不投]]></title>
<link>http://www.gisempire.com/blog/user1/28/2010223151921.html</link>
<description><![CDATA[<p><img class="aligncenter size-full wp-image-7047" title="20100222053945404" src="http://www.yunkeji.com/wp-content/uploads/2010/02/20100222053945404.jpg" alt="http://www.gisempire.com/blog/20100222053945404" width="450" height="299"></p>
<p>熟悉周鸿祎的人会说他是一个“不择手段的人”，但也不得不承认他是个“很强的人”。向来不喜欢按牌理出牌的他带领奇虎公司成功转型，聚集起了上亿用
户。甚至在2009年的杀毒软件市场，奇虎份额升至33.76%，终结了瑞星连续9年排名第一的历史。</p>
<p>　　安全360在进入市场的3年时间里，风生水起，主导了一场杀毒软件“免费”和“收费”的激烈斗争，周鸿祎也被众多业内人士称为安全市场的搅局
者。</p>
<p>　　年初，他和红杉中国合伙人沈南鹏、高原资本合伙人涂鸿川共同宣布启动一项投资计划——“免费软件起飞计划”。该计划拟在今后几年投入10亿元人
民币，帮助免费软件领域的中小公司和个人作者实现事业的起飞。他的身份不再仅仅是拥有两亿用户的安全软件公司的董事长，还是十余个项目的“天使”，而那些
流氓软件风暴、雅虎恩怨、与收费杀毒软件交恶等毁誉参半的争议似乎已经成为过往云烟。</p>
<p><span id="more-7046"></span></p>
<p>　　<strong>人人都用的服务应该免费</strong></p>
<p>　　记者：安全软件向来是以收费的形式在市场销售的，安全360为什么会选择免费的模式来进入这个市场?有人说您是这个市场的搅局者，您怎么看?</p>
<p>　　周鸿祎：安全在互联网领域越来越重要，它跟搜索引擎、即时通讯一样应该属于互联网基础应用，我认为互联网的基础服务都应该是免费的。网民不应该
为网络安全买单，他们对安全的需求，就像对空气和水一样。网民的安全如果得不到保障，那么网上银行和支付都发展不起来。</p>
<p>　　另外，从我们当年消灭流氓软件的经验来看，木马和病毒是一条很长的产业链，对付它们的方法就是把安全门槛降到零，电脑都有保护了，木马作者赚钱
的机会变少，就干不下去了。</p>
<p>　　我们开发软件的成本是固定的，每年投入大概几千万元开发产品，给几十万人用的话，摊下来成本很高，但如果是上亿的人来使用的话，成本就很低了。
我相信我们是有能力来做这个免费的软件的。</p>
<p>　　我们的目的也很简单，一是希望能够遏制木马和病毒的泛滥，二是让网民没有任何成本地建立互联网的安全体系，创造一个比较好的环境。</p>
<p>　　当然你要说我改变了这个市场的话，从战术上来说，免费确实也是一个抢占市场的非常好的手段。</p>
<p><strong>软件广告挣不了大钱</strong></p>
<p>　　记者：既然您决定安全360永久免费了，而盈利又是每个企业的终极目的，您有什么好的模式来保证盈利?</p>
<p>　　周鸿祎：我们不仅360安全卫士是免费的，杀毒和主动防御这些功能都是免费的，我们的核心功能肯定是永久免费，我们不打算在这里挣钱了，但是它
可以给我们带来庞大的用户群，我们需要它来建立我们的品牌，帮我们快速拿下市场份额。</p>
<p>　　我们可以推出跟安全相关的增值服务，这个是满足少数人的需求的。当然，我还是那句话了，人人都要用的服务必须免费。增值服务只要有1%的人来用
就可以了，举例来说，我们推出的在线安全备份服务，就会收费了，一个月哪怕收10元钱，我们一个月不就有3000万元的收入了吗?一年下来也是几个亿了。</p>
<p>　　还有很多人在想，用户多了是不是就可以放广告了?我对这个模式不看好，首先，软件是个工具，不是媒体，做广告的效果也非常有限。很难同时满足用
户和广告主的要求，会打扰用户，电脑上天天弹出广告，这又跟流氓软件一样，成新的危害了。</p>
<p>　　我也劝过其他一些做软件的，广告挣不了多少钱，为了挣钱都伤害了用户体验，最后用户跑了，你也完了。</p>
<p>　　我们现在做的投资里，我的计划里就有这一条，凡是以广告为盈利模式的，我们会劝他改正，改不了的，我们就不投了。</p>
<p>　　记者：您说过好的产品在于运营，360的运营有哪些值得借鉴的地方?</p>
<p>　　周鸿祎：对，我一直是这么想的，像现在很多软件都是闭门造车，一年也改不了几次，互联网本身就是更新很快的，应该时时刻刻按照用户的需求来改进
和打磨。</p>
<p>　　我觉得360的经验就是专注，聚焦在一个点上，不一定要做得很全，但一定要有点。要持续改进，很多杀毒软件都按照年来发版本，什么2008版、
2009版等，这种方法实质上是违背互联网哲学的，一年才改一次，怎么能满足用户需求呢?我们最快的时候一个星期就一个版本了。</p>
<p>　　你看google、百度，他们能做这么好，就是因为他们的产品每天都在持续改进。</p>
<p><strong>布局免费软件</strong></p>
<p>　　记者：沈南鹏在互联网的投资已经很成功了，这次的“起飞计划”为什么会选择您来合作呢?</p>
<p>　　周鸿祎：我想他这次选择我来做这个事情，也是因为看中了安全360的平台吧，另外，我之前创业过很多次了，有很多成功的经验，当然还有很多失败
的教训，这些都可以借鉴的。</p>
<p>　　如果你有一个很酷的软件，做得很好，我能在最短的时间来帮你运作。不需要你有市场运作能力，我只要求你的产品很好，能够把用户利益放在第一位，
能够做出最受欢迎的产品和服务。</p>
<p>　　我们可以带给创业者一些经营的理念、运作的经验，帮助他来做市场推广，这样的话小公司很快就能获得飞速的发展。</p>
<p>　　记者：这个起飞计划一共有10亿元的资金，您会投给什么样的软件?</p>
<p>　　周鸿祎：我们投的软件有两种，一种是免费的基础服务软件，你只要记住我这句话就可以了，每个人都用到的服务就是基础服务，就应该免费。这样的软
件借助我们的平台来运作，有可能发展成为一个千万用户级别甚至上亿用户的软件。另外一种是面对小众用户的<a class="keylink" href="http://www.hululady.com/Biz/" target="http://www.gisempire.com/blog/_blank">行业</a>软件，这一类的软件，可以扶植
成为我们安全360上面的一个应用。</p>
<p>　　我见过很多小的软件作者或者是个人工作室，他们没有商业运作的能力，只有做产品的能力，这样的人就算给他一点钱去做事，也未必能成功。你看近几
年，风险投资商很少投这样的软件了，都去投网游、商务类的去了。</p>
<p>　　我看好的软件主要有三种，电脑上的免费软件、手机上的免费软件和基于web的服务，像网页游戏类的。特别窄的行业类软件暂时就不考虑了。</p>
<p><strong>听不进劝的创业者不投</strong></p>
<p>　　记者：您在投资一个企业的时候，是怎么来跟这些创业者沟通的呢?会具体参与公司的事务吗?</p>
<p>　　周鸿祎：我投资的企业，都会参与具体事务的，这个可能跟其他人不一样吧。</p>
<p>　　我首先帮他们做规划产品战略，把他们最早的想法定型，其实越小的企业，要初创的企业，越需要一个清晰的战略。</p>
<p>　　另外，我会跟他们说，不要以为挂了周鸿祎的名义就能融到钱，我觉得我还没有牛到这个份上。但是我会教他们很多方法，首先在跟VC谈之前要给自己
定下明确的商业计划，你解决了一个什么问题，你提供了一个什么产品，这个产品有什么价值，它面对什么用户。你把这些理清了，你就很容易跟VC说清楚了。</p>
<p>　　很多人不知道VC带来的是一种游戏规则，决定了企业的创始人、天使投资人、风险投资人，还有员工、骨干、高级管理层、职业经理人的角色。股份和
期权这些问题一定要在开始的时候就是透明的，很多企业做到后来做不下去，都是因为资本架构上出了问题。</p>
<p>　　记者：您自己也创业很多年了，现在做天使投资，喜欢什么样的创业者?</p>
<p>　　周鸿祎：作为创业者，首先，不要以为自己很牛，不要想着“天王老子第一”。其实在这个世界里，每个人都要学会和别人合作，通过合作来弥补自己的
不足。我这么多年见过很多很优秀的技术人，不擅长交流，不擅长合作，自己闷着头在家里做个网站或者软件，以为自己的东西很好，就皇帝的女儿不愁嫁了，以为
自己能成为下一个腾讯，成为下一个百度。</p>
<p>　　但凡创过业的人都知道这是不可能的，我见过的一些有才华的人，由于不懂得跟别人合作，最后也浪费了很多机会。</p>
<p>　　第二，我最看重的是创业者的学习能力，我要看他是不是能与时俱进，因为每个人都不是完美的。如果是那种故步自封、听不进别人劝告的人，一意孤行
的人，是很难成功的。</p>
<p>　　我们对投资的公司最大的帮助其实不在于每天说好话，表扬他，而是更多的批评和建议，这才是我们的价值所在，如果没有学习的心态，没有进步和成
长，这个公司也做不起来。</p>
<p>　　第三，把用户体验和利益放在第一位，商业价值是建立在用户基础上的，前提是用户喜欢你，你有价值。我们判断产品和团队就是按照这个标准来找的，
你看有些产品，根本没有给用户带来价值，只是一个商业工具，天天绞尽脑汁从用户身上赚钱的，我们不喜欢，我们只喜欢那些为用户创造价值的。</p>
<p>　　还有一点就是韧性，成功不是一件容易的事，很多年轻的创业者都很冲动，很有激情，光幻想着自己成功以后怎么怎么样，而没有想过成功是要经过数十
年如一日的艰苦奋斗的。所以没有韧劲就坚持不下来。</p>
<p>新闻来源：理财一周报</p>]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-23 15:19:00</pubDate>
</item>
<item>
<title><![CDATA[[转]Discuz 论坛地图插件(通过自定义Discuz Code实现)]]></title>
<link>http://www.gisempire.com/blog/user1/28/2010222192848.html</link>
<description><![CDATA[<p>看了非常多的论坛地图插件和博客地图插件，总觉得不是很好用，不是安装太复杂就是使用太复杂，而且效果也是差强人意。最近在做<a href="http://mapurl.info/">MapURL.info</a>的网站，就是一个通过URL分享地图的简单网站(<a href="http://www.cnblogs.com/Tangf/archive/2010/01/31/1660347.html">详细介绍</a>)，
于是乎想把网站的功能搬到博客和论坛。其实，不管是谁开发的地图插件，基本上都是通过插入一个iframe实现，于是我做了iframe，而论坛一般会限
制iframe，所以将iframe通过Discuz Code(UBB 
code也是同理)来实现，这样在论坛也就可以显示地图了。好吧，我们具体来讲解一下需求和操作吧。</p>
<p>我一般先想好需求然后再开始做页面，那么论坛地图插件主要实现的是什么呢？当然是显示地图。但地图有简单和复杂之分啊，那用数据库？我不想用数据
库，因为数据库的操作不仅仅写代码太麻烦，而且使用的时候也会变的很复杂。其实细想一下，插入一份地图，最简单的就是一个marker，复杂的则可能有多
个点或线等对象，对于简单的地图我们不使用数据库就可以实现，对于复杂地图难道一定要用数据库吗？即使用到数据库，也不一定完全能够表达出一个复杂的地
图，或者由于操作的过于繁杂而让他人本身就不想放置一份地图了，不过，如果在本地通过软件先将复杂地图编辑好，做成一份gpx或者kml文件，也许是不错
的。所以，需求就是显示一个地图，可以简单可以复杂，复杂的就通过加载gpx或者kml文件来实现，另外就是在发贴操作的时候要简单。而值得高兴的是，我
在做MapURL.info的时候就已经实现了这些功能，大家可以通过<a href="http://mapurl.info/help.html">帮
助页面</a>看到这几大功能，而我现在只需要在论坛中简单插入地图就可以了。</p>
<p>说了这么多废话回过头来说安装。如果说论坛本身支持iframe那么我也就没有写这个帖子的必要了，但虽然论坛不支持iframe不过我们作为管理
员倒可以让用户插入iframe，这个方法就是通过自定义Discuz Code的方法实现。</p>
<p>进入论坛后台管理-界面-编辑器设置-Discuz!代码，新增一个mapurl的标签，如下图所示：</p>
<p><img title="discuzcodeadd" style="display: inline; border: 0px none;" alt="discuzcodeadd" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzcodeadd_3.png" border="http://www.gisempire.com/blog/0" width="602" height="190"> </p>
<p>其中map.gif是一个图标，我做了一个<img style="display: inline; margin-left: 0px; margin-right: 0px; border: 0px none;" src="http://mapurl.info/images/map.gif" border="http://www.gisempire.com/blog/0">，可以直接另存为map.gif到你的电脑，
然后将map.gif上传到论坛的images\common目录下，当然你也可以自己定制一个。新增完成后点详情进行设置，如下图所示：</p>
<p><img title="discuzcodesetting" style="display: inline; border: 0px none;" alt="discuzcodesetting" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzcodesetting_3.png" border="http://www.gisempire.com/blog/0" width="314" height="558"> </p>
<p>其中，替换的内容为：&lt;iframe src="http://mapurl.info/if/#{1}" width="http://www.gisempire.com/blog/640" 
height="480" frameborder="0" marginwidth="0" scrolling="no" 
marginheight="0"&gt;&lt;/iframe&gt;，就是一个iframe而已，而#后面的内容通过输入获得。需要说明一下的
是：http://mapurl.info/if/#这个地址，我暂时还没有单独提取出来，后期将提取出来后让大家放置在自己的网站上，以避免我的网站速
度慢而影响效果。设置完成这些后，你发表日志的时候就可以看到插入地图的按钮了。</p>
<p><a href="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzpub_2.png"><img title="http://www.gisempire.com/blog/discuzpub" style="display: inline; border: 0px none;" alt="discuzpub" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzpub_thumb.png" border="http://www.gisempire.com/blog/0" width="602" height="160"></a></p>
<p>点那按钮，然后输入地图控制代码，提交后就表示插入了一个地图。 效果如下图所示：</p>
<p><img title="discuzpubview" style="display: inline; border: 0px none;" alt="discuzpubview" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzpubview_3.png" border="http://www.gisempire.com/blog/0" width="602" height="394"></p>
<p>当然，你也可以插入其他一些地图控制代码，比如复杂的展示一个kml文件“[mapurl]wttghbcf7uxvm13-http%3A%2F
%2Fmapurl.info%2Fyangchenghuchixie.kml[/mapurl]”，你可以得到如下效果：</p>
<p><img title="discuzpubviewkml" style="display: inline; border: 0px none;" alt="discuzpubviewkml" src="http://images.cnblogs.com/cnblogs_com/Tangf/WindowsLiveWriter/DiscuzDiscuzCode_112A9/discuzpubviewkml_3.png" border="http://www.gisempire.com/blog/0" width="602" height="481"> </p>
<p>更多地图控制代码可以通过<a href="http://mapurl.info/">MapURL.info</a>中获得，我们提供了<a href="http://mapurl.info/wizard.html">向导</a>页面，按照向导生成代码即可，所有方法都可以通过<a href="http://mapurl.info/help.html">帮助</a>获得。</p>
<p>&nbsp;</p>
<p>罗嗦的说了非常多，边聊天边写这篇日志，所以很乱糟糟，大家将就着看吧。如果有什么问题欢迎留言，我尽量解答。如有好的建议也欢迎提出哦。最后也希
望我的<a href="http://mapurl.info/">MapURL.info</a>网站能够给你带来一些方便吧。</p><div id="http://www.gisempire.com/blog/MySignature"><p><a href="mailto:tfljh@163.com">Rover.Tang</a><br>
<a href="http://tangf.cnblogs.com/">http://Tangf.CnBlogs.Com</a><br>
<a href="http://photo.sharesh.cn/">http://www.ShareSh.cn</a></p>
</div>]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-22 19:28:00</pubDate>
</item>
<item>
<title><![CDATA[中国88个品牌入选"世界500强" 多为央企]]></title>
<link>http://www.gisempire.com/blog/user1/28/201021091726.html</link>
<description><![CDATA[中广网北京2月9日报道 由世界品牌组织、美中经贸投资总商会、美国世界著名企业联盟联合推选的2009年度“世界著名品牌500强”，今天（9号）在日本东京向世界公布，中国石化、中国石油、神华集团、海尔集团、长江实业等中国88个品牌企业榜上有名。<br><br>其中，中国内地共有79个品牌企业入选，中国香港3个品牌企业入选，中国台湾6个品牌企业入选，这些入选品牌企业年营业收入均超过100亿美元。<br><br>世界著名品牌大会主席、美中经贸投资总商会会长周茳钐钧说，世界著名品牌大会重点考察入选品牌企业在过去连续15年里经营、管理、品牌提升等各个方面的表现。评选程序包括独立问卷调查、统计数据分析、专家考察团实地调研、网上公众推选和权威专家函评等。入选品牌企业不仅具有良好的品牌提升、品牌维护、品牌管理丰富经验，而且均是行业最具竞争力的领军品牌，在年度世界著名品牌初选阶段，中国共有100个品牌企业入围，后经更为严格的筛选程序，最终 88个中国品牌企业上榜，入选品牌将获颁发3项年度品牌大奖，即年度“世界著名品牌500强”大奖、年度“影响世界最具全球竞争力中国力量领军品牌”大奖及年度“关注民生、构建和谐”优秀品牌建设者大奖。<br><br>入选2009“世界著名品牌500强”的企业将应邀出席世界著名品牌大会每月举行的月会和世界著名品牌500强战略合作大会、世界著名品牌500强企业发展高峰论坛、世界著名品牌500强企业发展成就展、授牌仪式和颁奖典礼，借助大会宣传推广平台，举行专场推广会和海外市场拓展活动，以达到进一步提高企业发展和管理水平，增强企业综合实力的目的。<br><br>由世界著名品牌大会主办机构世界品牌组织、美中经贸投资总商会、美国世界著名企业联盟联合推选的“世界著名品牌500强”主要从多个角度考察年度入选品牌表现，采用的指标包括国际知名度、新闻影响力、效益增长速度和活力、企业品牌价值、应对国际金融危机和市场变化能力、国际交往水平、“关注民生、构建和谐”社会责任和公众认知度等。<br><br>入选世界著名品牌500强的品牌企业全名单：<br><br>中国内地：79个<br><br>中国石化、中国石油、国家电网、工商银行、中国移动、建设银行、中国人寿、中国银行、农业银行、中化集团、南方电网、宝钢集团、中铁股份、铁建股份、中国电信、中国建筑、中国海油、远洋运输集团、中粮集团、中国联通、五矿集团、交通建设集团、上汽工业集团、中钢集团、河北钢铁集团、百联集团、冶金科工集团、一汽集团、中信集团、东风汽车、华能集团、航空工业集团、兵器装备集团、兵器工业集团、沙钢集团、神华集团、邮政集团、平安保险集团、首钢总公司、中国人保集团、交通银行、中国铝业、武汉钢铁集团、华为集团、中国化工集团、华润集团、山东钢铁集团、海尔集团、广汽工业集团、联想集团、浙江物产集团、航空油料集团、船舶重工集团、苏宁电器、大唐集团、太原钢铁集团、铁路物资总公司、太平洋保险集团、机械工业集团、天津市中环电子信息集团、上海电气集团、鞍山钢铁集团、外运长航集团、国电集团、山西煤销运销集团、中国华电集团、益海嘉里投资、河南煤业化工集团、美的集团、魏桥创业集团、海运集团、马钢集团、天津市物资集团、天津汽车工业集团、山西焦煤集团、中煤能源集团、电力投资集团、电子信息产业集团、湖南华菱钢铁集团。<br><br>中国香港：3个<br><br>长江实业集团、来宝集团、怡和集团。<br><br>中国台湾：6个<br><br>鸿海科技集团、国泰人寿保险、中油股份、台塑石化股份、广达电脑公司、华硕电脑公司。<br><br>德国：35个<br><br>大众汽车、安联集团、戴姆勒、意昂集团、西门子、麦德龙、德国邮政、巴斯夫集团、德国电信、德意志银行、宝马、莱茵集团、慕尼黑再保险公司、博世集团、联邦铁路公司、拜耳集团、巴登-符腾堡州银行、弗朗茨海涅尔集团、复兴信贷银行、国际旅游联盟集团、汉莎集团、大陆轮胎公司、商业银行、中央合作银行、卡尔施泰特万乐公司、巴伐利亚银行、豪赫蒂夫公司、贝塔斯曼集团、曼恩集团、赢创工业公司、艾德卡公司、贺利氏控股集团、许珀不动产控股公司、汉高集团、北德意志州银行。<br><br>法国：35个<br><br>道达尔、巴黎银行、家乐福、兴业银行、燃气苏伊士集团、电力集团、安盛公司、标致、法国电信、圣戈班集团、松鼠储蓄银行、欧尚集团、威立雅集团、万喜集团、布伊格集团、法切莱公司、赛诺菲-安万特集团、维旺迪集团、国营铁路公司、法航荷航集团、巴黎春天百货集团、邮政总局、拉法基集团、施耐德电气公司阿尔斯通公司、克里斯汀迪奥公司、欧莱雅集团、阿尔卡特朗讯公司、米其林集团、达能集团、工商信贷银行、安盟-甘集团、埃法日建工公司、阿海珐集团、液化空气有限公司、蓝格赛公司。<br><br>英国：27个<br><br>英国石油公司、汇丰控股、苏格兰皇家银行、特易购、巴克莱银行、沃达丰、联合利华、力拓、葛兰素史克公司、南苏格兰电力公司、森特理克集团、电信集团、英杰华集团、沃斯利集团、劳埃德银行集团、桑斯博里公司、阿斯利康公司、BAE系统公司、联合博姿公司、国家电力供应公司、英美资源集团、威廉莫里斯超市连锁公司、渣打银行、天然气集团、金巴斯集团、英美烟草集团、帝国烟草集团。<br><br>日本：60个<br><br>丰田汽车、邮政株式会社、电报电话公司、本田汽车、日立、日产汽车、松下电器、索尼、生命保险公司、东芝集团、新日本石油公司、三菱集团、东京电力公司、三菱日联金融集团、Seven&amp;I公司、三井物产公司、第一生命保险公司、永旺集团、新日本制铁公司、电气公司、丸红株式会社、日本钢铁工程控股公司、日本明治安田生命保险公司、日本新日矿集团、日本三菱电机股份有限公司、住友生命保险公司、三井住友金融集团、瑞穗金融集团、住友电气工业株式会社、东京海上控股股份公司、KDDI电信公司、伊藤忠商事株式会社、三菱重工业股份有限公司、出光兴产株式会社、普利司通轮胎公司、电装公司、铃木汽车公司、科斯莫石油公司、三菱化学公司、夏普公司、日本烟草公司、关西电力公司、东日本铁路公司、日本软银、T&amp;D控股公司、马自达汽车公司、麦迪西帕塔控股公司、富士胶片公司、邮船公司、爱信精机公司、神户钢铁公司、住友电气工业株式会社、理光集团、三井住友保险公司、小松公司、三菱汽车公司、日本航空公司、鹿岛建设公司、麒麟控股株式会社、商船三井株式会社。<br><br>美国：130个<br><br>埃克森美孚、沃尔玛、雪佛龙、康菲石油、通用电气、通用汽车、福特汽车、电话电报公司、惠普、瓦莱罗能源公司、美国银行、花旗集团、伯克希尔哈撒韦、麦克森公司、IBM、摩根大通、韦里孙通讯公司、卡地纳健康集团、CVS/Caremark公司、宝洁、联合健康集团、克罗格公司、邮政总局、马拉松石油公司、好市多公司、家得宝公司、美源伯根公司、阿彻丹尼尔斯米德兰公司、塔吉特公司、强生公司、摩根士丹利、州立农业保险公司、Wellpoint公司、戴尔公司、波音公司、微软、沃尔格林公司、联合技术公司、陶氏化学公司、大都会人寿保险公司、高盛集团、邦奇公司、太阳石油公司、富国银行、UPS公司、卡特彼勒公司、美可保健公司、辉瑞公司、美国劳氏公司、时代华纳公司、西尔斯公司、百思买集团、超价商店公司、西夫韦公司、百事公司、卡夫食品公司、洛克希德马丁公司、阿美拉达赫斯公司、江森自控有限公司、联邦快递公司、沃特迪斯尼公司、英特尔公司、西斯科公司、霍尼韦尔国际公司、斯普林特 Nextel公司、GP控股、通用汽车金融服务公司、英格雷姆麦克罗公司、康卡斯特电信公司、诺斯洛普格拉曼公司、新闻集团、苹果电脑公司、社区卫生系统公司、可口可乐公司、运通公司、杜邦公司、纽约人寿保险公司、安泰保险金融集团、摩托罗拉公司、PAA公司、雅培公司、好事达保险公司、教师退休基金会、通用动力公司、保德信金融集团、哈门那公司、礼宝相互保险公司、迪尔公司、HCA公司、美国泰森食品公司、铝业公司、特索罗石油公司、墨菲石油公司、斯伦贝谢公司、来德爱公司、菲利普莫里斯国际公司、埃森哲咨询公司、艾默生电气集团、国际纸业公司、西方石油公司、圣保罗旅行者保险公司、TechData公司、默克集团、美国航空公司、钢铁公司、纽柯公司、麦当劳公司、雷神公司、史泰博公司、惠氏公司、达美航空公司、甲骨文公司、福陆公司、快捷药方公司、西北相互人寿保险公司、万宝盛华公司、泰科国际有限公司、百时美施贵宝公司、礼来公司、联合航空公司、全国保险公司、联合能源公司、直播电视集团有限公司、固特异轮胎公司、金佰利公司、合众银行、亚马逊公司、信诺集团、惠而浦公司、耐克公司。加拿大：14个<br><br>皇家银行、鲍尔集团、乔治威斯顿公司、宏利金融集团、加拿大能源公司、森科尔能源公司、加拿大石油公司、丰业银行、Onex公司、多伦多道明银行、麦格纳国际公司、赫斯基能源公司、庞巴迪公司、蒙特利尔银行。<br><br>韩国：13个<br><br>三星电子、LG集团、SK集团、现代汽车公司、浦项制铁集团、GS控股集团、韩国电力公司、现代重工集团、朝华集团、三星人寿保险公司、韩国天然气公司、双龙炼油公司、斗山集团。<br><br>瑞士：12个<br><br>雀巢集团、瑞银集团、瑞士信贷、罗氏公司、诺华公司、ABB集团、苏黎世金融服务集团、瑞士阿第克公司、Petroplus控股公司、Migros 公司、霍尔希姆公司、瑞士再保险公司。<br><br>荷兰：10个<br><br>荷兰皇家壳牌、荷兰国际集团、欧洲宇航防务集团、莱昂德尔巴塞尔工业公司、荷兰合作银行、荷兰皇家阿霍德集团、皇家飞利浦电子公司、荷兰 GasTerra能源公司、荷兰阿克苏诺贝尔公司、荷兰喜力控股公司。<br><br>西班牙：10个<br><br>国家银行、西班牙电话公司、雷普索尔-YPF公司、毕尔巴鄂比斯开银行、伊维尔德罗拉公司、ACS集团、西班牙石油公司、Acciona、法罗里奥集团、西班牙天然气公司。<br><br>澳大利亚：8个<br><br>必和必拓集团、伍尔沃斯公司、澳新银行、联邦银行、国民银行、太平洋银行、Wesfarmers、澳大利亚电信公司。<br><br>俄罗斯：8个<br><br>俄罗斯天然气公司、卢克公司、俄罗斯石油公司、秋明英国石油控股公司、联邦储蓄银行、谢韦尔钢铁公司、苏尔古特石油天然气股份公司、耶弗拉兹集团。<br><br>意大利：7个<br><br>埃尼集团、忠利保险、联合信贷银行、国家电力公司、菲亚特、联合圣保罗银行、意大利电信集团。<br><br>印度：7个<br><br>印度石油公司、塔塔钢铁公司、瑞来斯实业公司、巴拉特石油公司、斯坦石油公司、印度国家银行、印度石油天然气公司。<br><br>瑞典：6个<br><br>沃尔沃汽车公司、爱立信公司、北欧联合银行、Vattenfall公司、斯堪雅建筑集团、斯堪雅建筑集团。<br><br>新加坡：5个<br><br>伟创力公司、丰益国际公司、新加坡航空、胜科工业、新加坡石油。<br><br>巴西：5个<br><br>淡水河谷公司、国家石油公司、布拉德斯科银行、伊塔乌投资银行、巴西银行。<br><br>比利时：4个<br><br>德克夏银行、比利时联合银行、德尔海兹集团、英博集团。<br><br>墨西哥：4个<br><br>国家石油公司、美洲电信公司、国家电力公司、西迈克斯集团。<br><br>挪威：2个<br><br>国家石油公司、挪威水电。<br><br>卢森堡：1个<br><br>阿塞洛集团。<br><br>芬兰：2个<br><br>诺基亚、耐思特石油公司。<br><br>马来西亚：1个<br><br>马来西亚石油公司。<br><br>丹麦：2个<br><br>马士基集团、丹斯克银行。<br><br>沙特阿拉伯：1个<br><br>沙特基础工业公司。<br><br>泰国：1个<br><br>泰国国家石油。<br><br>土耳其：1个<br><br>KOC集团。<br><br>爱尔兰：1个<br><br>CRH公司。]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-10 9:17:00</pubDate>
</item>
<item>
<title><![CDATA[C#2008+ArcGIS Mobile实现路口定位]]></title>
<link>http://www.gisempire.com/blog/user1/28/201028152944.html</link>
<description><![CDATA[第一步：在道路图层中，通过模糊查询获取道路列表，并选取所需的道路，C#代码如下：<br><br>代码<br>1 /// &lt;summary&gt;<br>2 /// 模糊查询道路<br>3 /// &lt;/summary&gt;<br>4 /// &lt;param name="_name"&gt;道路名关键字&lt;/param&gt;<br>5&amp; amp;nbsp; /// &lt;param name="_ms"&gt;待操作的mobileservice&lt;/param&gt;<br>6 /// &lt;param name="_layername"&gt;操作的图层名&lt;/param&gt;<br>7 /// &lt;param name="_lb"&gt;填充结果的ListBox&lt;/param&gt;<br> 8 /// &lt;param name="_lg"&gt;获取的geometry集合&lt;/param&gt;<br>9 public static void SearchRoadList(string _name, MobileService _ms, string _layername, ListBox _lb,out List&lt;Geometry&gt; _lg)<br>10 {<br>11 _lb.Items.Clear();<br>12 if (String.IsNullOrEmpty(_name))<br>13 {<br>14 _lg = null;<br>15 return;<br>16 }<br>17 <br>18 MobileServiceLayer msl = _ms.Layers[_layername] as MobileServiceLayer;<br>19 FeatureLayer fl = msl as ESRI.ArcGIS.Mobile.MobileServices.FeatureLayer;<br>20 string qstr = "NAME Like '%" + _name + "%'";//过滤内容<br>21 <br>22 QueryFilter qf = new QueryFilter(qstr, true);//过滤器<br>23 <br>24 using (FeatureDataReader fdr = fl.GetDataReader(qf))<br>25 {<br>26 _lg = new List&lt;Geometry&gt;();<br>27 while (fdr.Read())<br>28 {<br>29 Geometry geo = fdr.GetGeometry() as ESRI.ArcGIS.Mobile.Geometries.Geometry;<br>30 _lg.Add(geo);<br>31 string id = Convert.ToString(fdr["OBJECTID"]);<br>32 string name = Convert.ToString(fdr["NAME"]);<br>33 _lb.Items.Add(id + "-" + name);<br>34 }<br>35 }<br>36 if (_lb.Items.Count == 0)<br>37 {<br>38 MessageBox.Show("搜寻结果为空!", "提示");<br>39 }<br>40 <br>41 <br>42 }<br><br>这里除了获取名称以外，也获取了道路的ID，这是因为在实际的数据中可能会有多条道路Polyline的 Name相同，但ID不同，下面主要是通过 ID定位道路<br><br> 在ListBox有查询结果，选择道路后，可以从上面的List&lt;Geometry&gt; _lg中获取对应的Geometry，下面另外附了一段代码，是通过ID获取道路的Geometry的：<br><br>代码<br>1 /// &lt;summary&gt;<br>2 /// 根据ID获取道路的 Geometry<br>3 /// &lt;/summary&gt;<br>4 /// &lt;param name="_roadid"&gt;道路ID&lt;/param&gt;<br>5/// &lt;param name="_layername"&gt;道路操作图层&lt;/param&gt;<br>6 /// &lt;param name="_ms"&gt;要操作的MobileService&lt;/param&gt;<br>7 /// &lt;returns&gt;&lt;/returns&gt;<br>8 public static ESRI.ArcGIS.Mobile.Geometries.Geometry GetGeometry(string _roadid, string _layername, MobileService _ms)<br>9 {<br>10 MobileServiceLayer msl = _ms.Layers[_layername] as MobileServiceLayer;<br>11 FeatureLayer fl = msl as FeatureLayer;<br>12 string qstr = "OBJECTID=" + _roadid;<br>13 QueryFilter qf = new QueryFilter(qstr, true);<br>14 ESRI.ArcGIS.Mobile.Geometries.Geometry G = null;<br>15 try<br>16 {<br>17 using (FeatureDataReader fdr = fl.GetDataReader(qf))<br>18 {<br>19 while (fdr.Read())<br>20 {<br>21 G = fdr.GetGeometry() as ESRI.ArcGIS.Mobile.Geometries.Geometry;<br>22 return G;<br>23 }<br>24 }<br>25 return G = null;<br>26 }<br>27 catch (Exception ex)<br>28 {<br>29 MessageBox.Show(ex.Message, "错误");<br>30 return G = null;<br>31 }<br>32 }<br>第二步，分析处理两个道路的Geometry，得到路口，并在图中高亮显示出来，C#代码如下，我的表述能力不怎么好，希望通过代码来弥补<br>代码<br>1 /// &lt;summary&gt;<br>2 /// 高亮显示路口<br>3 /// &lt;/summary&gt;<br>4 /// &lt;param name="mainroadid"&gt;主路的道路ID&lt;/param&gt;<br>5 /// &lt;param name="crossroadid"&gt;跨越道路ID&lt;/param&gt;<br>6 /// &lt;param name="layername"&gt;操作的图层名&lt;/param&gt;<br> 7 /// &lt;param name="ms"&gt;操作的MobileService&lt;/param&gt;<br>8 /// &lt;param name="mp"&gt;操作的MobileMap&lt;/param&gt;<br> 9 /// &lt;param name="cc"&gt;搜集到的CoordinateCollection&lt;/param&gt;<br& gt;10="" &lt;param="" name="IsMacth" &gt;是否超过一个路口&lt;="" param&gt;=""><br>11 public static void HightLightRoadCorner(Geometry mainGeo,Geometry crossGeo, string layername, MobileService ms, ESRI.ArcGIS.Mobile.Map mp, out CoordinateCollection cc, bool IsTouch)<br>12 {<br>13 try<br>14 {<br>15 //Geometry mainGeo = GetGeometry(mainroadid, layername, ms);<br>16 if (mainGeo == null)<br>17 {<br>18 MessageBox.Show("不能获取对应道路,请检查", "提示");<br>19 cc = null;<br>20 return;<br>21 }<br>22 <br>23 //Geometry crossGeo = GetGeometry(crossroadid, layername, ms);<br>24 if (crossGeo == null)<br>25 {<br>26 MessageBox.Show("不能获取第二条道路, 请检查", "提示");<br>27 cc = null;<br>28 return;<br>29 }<br>30 GeometricRelationshipType _type;<br>31 if (IsTouch == true)<br>32 _type = GeometricRelationshipType.Touch;//两条道路有两个或以上的路口<br>33 else<br>34 _type = GeometricRelationshipType.Cross;//两条道路有一个路口<br>35 <br>36 bool IsCross = mainGeo.Relate(crossGeo, _type);//判断两者是否相交<br>37 <br>38 if (IsCross == true)<br>39 {<br>40 IList&lt;CoordinateCollection&gt; crossRoadParts = crossGeo.Parts;<br>41 IList&lt;Coordinate&gt; crossRoadCoordinate = crossRoadParts[0];<br>42 CoordinateCollection tmpCollect = new CoordinateCollection();<br>43 <br>44 if (crossRoadCoordinate.Count != 0)<br>45 {<br>46 for (int i = 0; i &lt; crossRoadCoordinate.Count; i++)<br>47 {<br>48 ESRI.ArcGIS.Mobile.Geometries.Point tmppoint = new ESRI.ArcGIS.Mobile.Geometries.Point(crossRoadCoordinate[i]);<br>49 <br>50 if (tmppoint.Within(mainGeo))<br>51 {<br>52 if (IsTouch == true)//有两个或以上交叉路口<br>53 {<br>54 Coordinate c = tmppoint.GetExtent().GetCenter();<br>55 tmpCollect.Add(c);<br>56 HighLightOnlyRoadCorner(tmppoint, mp, ms, layername);<br>57 }<br>58 else<br>59 {<br>60 cc=tmpCollect = null;<br>61 HighLightOnlyRoadCorner(tmppoint, mp, ms, layername);<br>62 return; <br>63 } <br>64 <br>65 }<br>66 <br>67 }<br>68 }<br>69 //if (tmpCollect.Count == 0)<br>70 // cc = null;<br>71 //else<br>72 // cc = tmpCollect;<br>73 cc = tmpCollect;<br>74 <br>75 }<br>76 else<br>77 {<br>78 MessageBox.Show("两条道路不能相交,不能确定路口!", "提示");<br>79 cc = null;<br>80 return;<br>81 }<br>82 }<br>83 catch<br>84 {<br>85 cc = null;<br>86 }<br>87 <br>88 }<br>下面是写的两个相关的函数<br>代码<br>1 /// &lt;summary&gt;<br>2 /// 判断点是否在指定区域内<br>3 /// &lt;/summary&gt;<br>4 /// &lt;param name="_g"&gt;geometry&lt;/param&gt;<br>5 /// &lt;param name="_ev"&gt;指定区域&lt;/param&gt;<br>6&amp; nbsp; /// &lt;returns&gt;&lt;/returns&gt;<br>7 public static bool PointInEnvelop(Geometry _g, Envelope _ev)<br>8 {<br>9 Coordinate cd = _g.GetExtent().GetCenter();<br>10 double evcenterx = _ev.XCenter;<br>11 double evcentery = _ev.YCenter;<br>12 double minx = evcenterx - _ev.Width / 2;<br>13 double maxx = evcenterx + _ev.Width / 2;<br>14 double miny = evcentery - _ev.Height / 2;<br>15 double maxy = evcentery + _ev.Height / 2;<br>16 <br>17 if (cd.X &gt; minx &amp;&amp; cd.X &lt; maxx &amp;&amp; cd.Y &gt; miny &amp;&amp; cd.Y &lt; maxy)<br>18 {<br>19 return true;<br>20 }<br>21 else<br>22 {<br>23 return false;<br>24 }<br>25 }<br>26 <br>27 /// &lt;summary&gt;<br>28 /// 定位路口单点<br>29 /// &lt;/summary&gt;<br>30 /// &lt;param name="cornerpoint"&gt;路口点&lt;/param&gt;<br>31/// &lt;param name="mp"&gt;地图控件&lt;/param&gt;<br>32 /// &lt;param name="layername"&gt;图层名&lt;/param&gt;<br>33public static void HighLightOnlyRoadCorner(ESRI.ArcGIS.Mobile.Geometries.Point cornerpoint, ESRI.ArcGIS.Mobile.Map mp,MobileService ms,string layername)<br>34 {<br>35 Envelope newEnvelope = mp.GetExtent();<br>36 MobileServiceLayer msl = ms.Layers[layername] as MobileServiceLayer;<br>37 FeatureLayer fl = msl as ESRI.ArcGIS.Mobile.MobileServices.FeatureLayer;<br>38 if (fl.InScaleRange(mp.Scale))<br>39 {<br>40 if (PointInEnvelop(cornerpoint as Geometry,newEnvelope))<br>41 {<br>42 mp.FlashGeometry(new Pen(Color.Blue, 2.0F), new SolidBrush(Color.Red), 15, 500, 15, cornerpoint);<br>43 }<br>44 else<br>45 {<br>46 Coordinate tmpcd = cornerpoint.GetExtent().GetCenter();<br>47 Envelope tmpel = new Envelope(tmpcd, 250, 250);<br>48 mp.SetExtent(tmpel);<br>49 mp.FlashGeometry(new Pen(Color.Blue, 2.0F), new SolidBrush(Color.Red), 20, 500, 20, cornerpoint);<br>50 }<br>51 <br>52 }<br>53 else<br>54 {<br>55 Coordinate tmpcd = cornerpoint.GetExtent().GetCenter();<br>56 Envelope tmpel = new Envelope(tmpcd, 250, 250);<br>57 mp.SetExtent(tmpel);<br>58 mp.FlashGeometry(new Pen(Color.Blue, 2.0F), new SolidBrush(Color.Red), 20, 500, 20, cornerpoint);<br>59 <br>60 }<br>61 }<br>62 }<br><br></br&>]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-8 15:29:00</pubDate>
</item>
<item>
<title><![CDATA[Extracting Values from a Gridview]]></title>
<link>http://www.gisempire.com/blog/user1/28/201023191127.html</link>
<description><![CDATA[<pre style="margin-top: 0pt;" id="pre0">	<span class="code-keyword">public</span> IDictionary<span class="code-keyword">&lt;</span><span class="code-SDKkeyword">string</span>, <span class="code-SDKkeyword">object</span><span class="code-keyword">&gt;</span> GetValues(GridViewRow row)<br>        {<br>            IOrderedDictionary dictionary = <span class="code-keyword">new</span> OrderedDictionary();<br><br>            foreach (Control control <span class="code-keyword">in</span> row.Controls)<br>            {<br>                DataControlFieldCell cell = control as DataControlFieldCell;<br><br>                <span class="code-keyword">if</span> ((cell != null) &amp;&amp; cell.Visible)<br>                {<br>                    cell.ContainingField.ExtractValuesFromCell(dictionary, cell, row.RowState, <span class="code-keyword">true</span>);<br>                }<br>            }<br><br>            IDictionary<span class="code-keyword">&lt;</span><span class="code-SDKkeyword">string</span>, <span class="code-SDKkeyword">object</span><span class="code-keyword">&gt;</span> values = <span class="code-keyword">new</span> Dictionary<span class="code-keyword">&lt;</span><span class="code-SDKkeyword">string</span>, <span class="code-SDKkeyword">object</span><span class="code-keyword">&gt;</span>();<br><br>            foreach (DictionaryEntry de <span class="code-keyword">in</span> dictionary)<br>            {<br>                values[de.Key.ToString()] = de.Value;<br>            }<br><br>            <span class="code-keyword">return</span> values;<br>        } <br></pre>]]></description>
<author>没钱又丑</author>
<pubDate>2010-2-3 19:11:00</pubDate>
</item>

</channel>
</rss>