Google Earth 卫星地图影像数据获取与应用

Google Earth 卫星地图影像数据获取与应用
Google 公司通过Google Earth数字化平台和互联网络,向全世界免费发布其所拥有的全球卫星影像数据。本文阐述如何从Google Earth数字平台获得用户关心区域的地图卫星影像。
1 地图卫星影像获取方案
通过重写Google EarthKML数据文件,将用户关心的区域以“路标”点阵的方式写入KML数据文件;然后利用Google Earth提供的游览功能,自动播放KML文件;与此同时使用智能抓图软件,同步将播放图像保存为本地数据文件,完成地图卫星影像获取。
1.1 “路标”点阵写入KML文件
Google Earth允许用户在地图上感兴趣的特定位置处设置标志,即“路标”(Place Mark),它是Google Earth定义的一种空间点类型,包括路标名称、位置(经纬度、高度)、视角、等信息。
为了能够一次获取一个地区的全部图像,需要在该地区所在的空间范围内布置“路标”点阵。
Google Earth提供了添加和编辑“路标”的功能,但是要获取一个地区的地图卫星影像,就必须采用直接写入KML数据文件的方式,将区域所包含的大量的“路标”点阵写入Google Earth中。
Google EarthKML数据文件是一种通用非结构化数据文件(XML格式),通过KML数据文件,用户可以实现与Google Earth软件的沟通与交流。
KML数据文件包括文件头、数据体、文件结束三部分。附件1是一个Google Earth软件使用的KML数据文件例子。
-
<Placemark>
  <name>DQ47_05_125_00</name>
- <LookAt id="khLookAt676">
  <longitude>125</longitude>
  <latitude>.0833********</latitude>
  <range>8000导电银胶</range>
  <tilt>0</tilt>
  <heading>0</heading>
  </LookAt>
- <Style id="khStyle677伸缩杆">
- <LineStyle id="khLineStyle681">
  <color>ffff00ff</color>
  </LineStyle>
  </Style>
- <LineString id="khLineString684">
  <tessellate>1</tessellate>
  <coordinates />
  </LineString>
  </Placemark>
KML数据文件的具体访问方法参考DQMAP主程序KML写入部分及XMLU.PAS单元。写入KML数据文件时, 通过设置Placemark数据类型,将用户关心的区域进行覆盖。下图是Placemark数据类型的格式,重要的是将Placemark的空间位置(经度、纬度、高度)设置正确,其中经度、纬度数据单位是度,高度和视距单位是m
经度、纬度的计算方法根据视距和每屏覆盖的经差范围和纬差范围确定。保证相邻图像适度重合,然后计算每一幅图像的中心位置。
1.2 自动播放KML文件
KML调入Google Earth,在Google EarthOption菜单中设置控制参数。关键是要根据网速,设置图像的停顿时间,以便让Google Earth有充足的时间将图像数据通过网络从远端图像数据服务器传到本地。一般宽带网设置停顿时间为10-30秒,另外,为了加快抓图速
度,可以先浏览一、两次,提前将数据下载到烘手机Google Earth在本地的Cache数据文件中,在实际抓图时,Google Earth可以以较快的速度从Cache数据文件中获取数据,此时可以将停顿时间缩短,一般4秒即可。
1.3 智能抓图
智能抓图与播放KML文件同时进行,抓图功能由DQMAP软件提供。DQMAP可以根据Google Earth播放KML数据文件的进程,抓到最清晰的图像,并保存到设置的文件夹中。
为了保证抓图与播放动作同步,DQMAP软件在写KML文件和抓图时,在安排“路标”阵列与抓图数据文件名称时,采用一对一的关系。
“路标”阵列的安排如下:
  With DQ800[CurrentSec] do
  For j:=0 to ACol -1 do
  begin
      Lon:=LonSt+j*DLon;
      For i:=0 to ARow-1 do
      begin
        Lat:=LatSt-i*DLat;
        XMLDoc_WritePlaceMark(F,Prefix+FormatDegSecRound(Lat)+'_'+
                                        FormatDegSecRound(Lon),
                                Lon,Lat,DQ800[CurrentSec].Scale,False);
      end;
  end;
由定时器和图像自动识别单元组成的抓图图像文件列表安排如下:
  With DQ800[CurrentSec] do
  For j:=0 to ACol -1 do
  begin
      Lon:=LonSt+j*DLon;
      For i:=0 to ARow-1 do
      begin
        Lat:=LatSt-i*DLat;
        fn:=GetImageFileNameRound(Path,Prefix,Lat,Lon,NameLen,CheckBox1.Checked);
        Inc(k);
        SetLength(BMPFName,k);
        BMPFName[k-1]:=fn;
      end;
  end;
2 图像数据的组织与使用
2.1 ImageSect数据类型
声明了两个实例DQ800,DQUnits:TImageSecArr,分别代表区域数列和当前区域的图像数列。它们具有相同的数据类型。
TImageSecArr=Array of TImageSec;
其中ImageSect是为了描述一个区域或图像数据而定义的数据类型。
web前端性能优化  TImageSec=record
    LatSt,LonSt:Real;      //区域或图像的起点,存取一体机左上
    LatEn,LonEn:Real;      //区域或图像的终点,右下
    DLat,DLon:Real;        //区域或图像的范围纬差,经差
    NERange:RangeType;      //区域或图像的范围(MinP(左下),MaxP(右上)
    Rows,Cols:Integer;      //图像的行数、列数
    Scale:Real;            //视距,视野宽度
    Lats,Lons:TpVector;    //图像行阵列的纬度、图像行阵列的经度
    NameLen:Integer;        //2 for DD_MM,3 for DD_MM_SS
    SecDir, Path, Prefix,  //图像的存放目录
    SecName:String;        //区域名称
    SizeX,SizeY:Integer;    //图像单元的像素尺寸,图像的宽度、高度像素数
    Width,Height:Integer;  //区域图像尺寸(估计),宽度、高度像素数
    PixelToX,PixelToY:Real; //水平像素系数,垂直像素系数
    WidToHei:Real;          //垂直水平比例(估计)
    ImageLoaded:Boolean;
    MinScale,MaxScale:Real; //可见图像的比例尺范围
    ID:String[16];          //数据库中区域的ID
  end;
2.2 数据库
DQ800,DQUnits数据存放到数据库文件中,以便访问。附录3是从数据库文件中读取DQ800数据的程序段。下面是写当前ysn-264Section 的程序段。
With ASec do
For i := 0 to Rows do
For j := 0 to Cols do
Begin
FName:=GetImageFileNameRound(Path,Prefix,Lats.vec[i],Lons.vec[j],NameLen,IsGrided);
FieldByName('ID').asString:=UnitID;
FieldByName('SectName').asString:=FName;
FieldByName('SectDir').asString:=SecDir;
FieldByName('MainPath').asString:=Path;
UnitLatSt:=LatSt-DLat*i;
UnitLonSt:=LonSt+DLon*j;
FieldByName('LatSt').asFloat:=UnitLatSt;
FieldByName('LonSt').asFloat:=UnitLonSt;
Deg2DMS(UnitLatSt,DD,MM,SS);
FieldByName('LatStDD').asinteger:=DD;
FieldByName('LatStMM').asinteger:=MM;
FieldByName('LatStSS').asinteger:=SS;
Deg2DMS(UnitLonSt,DD,MM,SS);
FieldByName('LonStDD').asinteger:=DD;
FieldByName('LonStMM').asinteger:=MM;
FieldByName('LonStSS').asinteger:=SS;
UnitLatEn:=LatSt-DLat*(i+1);
UnitLonEn:=LonSt+DLon*(j+1);
FieldByName('LatEn').asFloat:=UnitLatEn;
Deg2DMS(UnitLatEn,DD,MM,SS);
FieldByName('LatEnDD').asinteger:=DD;
FieldByName('LatEnMM').asinteger:=MM;
FieldByName('LatEnSS').asinteger:=SS;
FieldByName('LonEn').asFloat:=UnitLonEn;
Deg2DMS(UnitLonEn,DD,MM,SS);
FieldByName('LonEnDD').asinteger:=DD;
FieldByName('LonEnMM').asinteger:=MM;

本文发布于:2024-09-22 11:26:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/203775.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   数据   区域   数据文件   抓图   路标
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议