在IE浏览器中输入 http://kh1.google.com/kh?n=404&v=21&t=trstrtrtrrrst ,可以看到一个图,现在我的问题是,如何在DELPHI中用编码的方式得到这幅图并保存?
解决方案 »
- 怎么用NewID()函数实现uniqueidentifier
- com组件使用时出错,很急,在线等待,100分!
- 莫名其妙的问题
- 下面两段代码有什么不同!!(三根鸡毛信!)
- 怎么控制点歌系统的音量!如增大音量,减小音量.我用的是神龙卡,我用waveoutsetvolume不起作用。
- 有谁知道怎么现实考试试题自动生成系统
- 我发现高手了,强烈建议为zswang(伴水)(被黑中)开个专栏,这样我们就不用愁了!
- ??一台wIN98的机器,突然运行速度变得很慢,排除病毒可能,还有可能什么原因
- 请问如何实现在资源管理器中的右键弹出菜单中使文件关联自己的程序...
- 不用BDE,如何对ACCESS数据操作??
- IE被恶意修改(好像是劫持)
- 编译错误
Connecting...
Sending...
'GET /kh?n=404&v=21&t=trstrtrtrrrst HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: kh1.google.com
Connection: Keep-Alive
Cache-Control: no-cache'
Receiving..........
返回的是该网页的所有代码,你只要去掉html头剩下的就是你想要的.再贴一次代码:
function TSearchThread.GetURLContent(SvrIP: string; SvrPort: integer;
strURL: string): string;
var
m_wsData: TWSAData;
m_Host: PHostEnt;
m_addr: sockaddr_in;
m_Buf : array[0..1023] of char;
m_iLen: integer;
m_strTmp: string;
begin
Result:= ''; WSAStartUp(MAKEWORD(2, 2), m_wsData); FSocket:= Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
m_Host:= GetHostByName(PChar(SvrIP)); if m_Host = nil then
exit; FillChar(m_addr, SizeOf(m_addr), 0);
m_addr.sin_family:= AF_INET;
m_addr.sin_Port := htons(SvrPort);
m_addr.sin_addr.S_addr:= PDWORD(PDWORD(m_Host.h_addr)^)^; Connect(FSocket, m_addr, SizeOf(m_addr)); m_strTmp:= FormatHead('GET', SvrIP, strURL, SvrPort);
//Send data to server
Send(FSocket, PChar(m_strTmp)^, Length(m_strTmp), 0); while true do
begin
m_iLen:= Recv(FSocket, m_Buf, SizeOf(m_Buf), 0); if (m_iLen < 1) then break; SetString(m_strTmp, m_Buf, m_iLen);
Result:= Result + m_strTmp;
end; CloseSocket(FSocket);
WSACleanUp;
FSocket:= 0;
end;function TSearchThread.FormatHead(Method, SvrIP: string; strURL: string;
SvrPort: integer): string;
begin
Result:= Method + ' /'+ strURL +' HTTP/1.1'#13#10; //Get Head
Result:= Result + 'Referer: http://' + SvrIP; if SvrPort <> 80 then
Result:= Result + ':' + IntToStr(SvrPort); Result:= Result + '/' + strURL + #13#10;
Result:= Result + 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)'#13#10;
Result:= Result + 'Host: ' + SvrIP; if SvrPort <> 80 then
Result:= Result + ':' + IntToStr(SvrPort); Result:= Result + ''#13#10;
Result:= Result + 'Connection: Close'#13#10;
Result:= Result + 'Cache-Control: no-cache'#13#10; Result:= Result + #13#10;
end;
一个全国30m精度的片子大概在100G左右(这个是优秀的压缩算法压缩过的,比如mrsid格式等),一般gis系统都是通过金字塔模型提供web服务的,这100个G只是金字塔的底层。如果是城市的话,30m是看不到什么东西的,你至少需要5m的,google的上海应该是0.6m一个像素。还有一些参数你没有的话,拿到这些图片也是无法使用的,比如坐标系,比如卫片的经纬度或者大地坐标的范围...如果通过web就被搞下来,google也不会这么发布了,卫片是受管制的,而且价格很贵。如果你们公司的项目确实需要还是走正规流程,找国内的供应商吧,一个大中型城市精度高的需要几十万到几百万不等,做这类东西是需要砸钱的.