日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

如何开发自己的电子地图系统 web版 单机或联网

發布時間:2024/3/24 windows 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何开发自己的电子地图系统 web版 单机或联网 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

電子地圖一般可以使用Baidu api等其他的API來制作,優點功能強大,但缺點是需要連接官方服務器,且難以定制自己的內容.

?現制作簡單的電子地圖,不用依賴其他API,而且方便自己擴展,流程如下:

1選擇開發語言as3?

?

2地圖投影

?

為了電子地圖影像無縫拼接起來,整個地球必須使用一個投影.一般選擇墨卡托投影(Mercator projection),下圖:

在墨卡托投影下,比例和面積明顯扭曲了 (特別是在兩極附近的地區).

為了簡化計算,我們使用球面投影的形式,而不是橢圓形的形式。由于投影是僅用于地圖顯示,而不是顯示數字坐標,我們不需要額外的橢圓投影的精度。使用球面投影的原因大約有0.33%規模扭曲在Y軸方向,視覺上不明顯

????????????????????????

?

地面分辨率和地圖比例尺

?

除了投影, 渲染地圖還需要地面分辨率或地圖比例尺。最低水平的縮放級別(1級),地圖是512 x 512像素。在每個連續的縮放級別,地圖寬度和高度增長的因素2:縮放級別? 2級是1024 x 1024像素,三級為2048 x 2048像素,4級是4096 x 4096像素,等等。一般來說,地圖的寬度和高度(以像素為單位)可以計算為:

地圖寬度=地圖高度= 256 * 2水平像素

地面分辨率:地圖上一個像素表示的地面距離。例如,在地面分辨率10米/像素,每個像素代表一個地面10米的距離。地面分辨率取決于縮放級別和它的緯度。使用一個地球半徑6378137米,地面分辨率(米/像素)可以計算為:

地面分辨率= cos(緯度* pi / 180)*地球周長/地圖寬度

=(cos(緯度* pi / 180)* 2 * pi * 6378137米)/(256 * 2水平像素)

地圖比例尺:在相同的單位下,地圖距離和地面距離之間的比率。例如,地圖比例尺為1:100000,地圖上的每一英寸代表一個地面100000英寸的距離。類似地面分辨率,地圖比例尺取決于緯度和縮放級別,它可以通過地面分辨率計算出來,比如給點每英寸的屏幕分辨率,通常96 dpi:

地圖比例尺= 1:地面分辨率*屏幕dpi / 0.0254米/英寸

= 1:(cos(緯度* pi / 180)* 2 * pi * 6378137 *屏幕dpi)/(256 * 2 * 0.0254)

?

下表列出每個縮放級別(在赤道來衡量)。(注意,地面分辨率和地圖比例尺也取決于緯度,上述方程所示,但不包括下表所示。)

?

縮放級別

地圖寬度和高度(象素)

地面分辨率 (米 / 象素)

地圖比例尺(96 dpi)

1

512

78,271.5170

1 : 295,829,355.45

2

1,024

39,135.7585

1 : 147,914,677.73

3

2,048

19,567.8792

1 : 73,957,338.86

4

4,096

9,783.9396

1 : 36,978,669.43

5

8,192

4,891.9698

1 : 18,489,334.72

6

16,384

2,445.9849

1 : 9,244,667.36

7

32,768

1,222.9925

1 : 4,622,333.68

8

65,536

611.4962

1 : 2,311,166.84

9

131,072

305.7481

1 : 1,155,583.42

10

262,144

152.8741

1 : 577,791.71

11

524,288

76.4370

1 : 288,895.85

12

1,048,576

38.2185

1 : 144,447.93

13

2,097,152

19.1093

1 : 72,223.96

14

4,194,304

9.5546

1 : 36,111.98

15

8,388,608

4.7773

1 : 18,055.99

16

16,777,216

2.3887

1 : 9,028.00

17

33,554,432

1.1943

1 : 4,514.00

18

67,108,864

0.5972

1 : 2,257.00

19

134,217,728

0.2986

1 : 1,128.50

20

268,435,456

0.1493

1 : 564.25

21

536,870,912

0.0746

1 : 282.12

22

1,073,741,824

0.0373

1 : 141.06

23

2,147,483,648

0.0187

1 : 70.53

?

像素坐標

已經在每個縮放級別的細節有了投影和比例尺,我們可以將地理坐標轉換成像素坐標。由于地圖寬度和高度是在不同的縮放級別,像素坐標也是如此。像素在地圖的左上角像素坐標總是 (0,0)。像素在地圖右下角的像素坐標是(width-1 height-1),或在前面的小節方程(256 * 2level–1, 256 * 2level–1)。例如,在3級,像素坐標范圍從(0,0)到(2047、2047),如下:

?

有了經度,緯度和縮放級別,像素XY坐標可以如下計算:

sinLatitude = sin(latitude * pi/180)

pixelX = ((longitude + 180) / 360) * 256 * 2 level

pixelY = (0.5 – log((1 + sinLatitude) / (1 – sinLatitude)) / (4 * pi)) * 256 * 2 level

緯度和經度使用WGS 84坐標系。雖然地圖使用球面投影,重要的是將所有的地理坐標轉換成一個共同的坐標系,都轉成WGS 84坐標系。假設經度范圍從-180 到 180度,緯度范圍必須裁剪,從-85.05112878到85.05112878。 這避免了在兩極出現異常,使投影地圖為矩形。

?

Tile坐標和Quadkeys

為優化地圖的檢索和顯示性能,地圖每Tile被分割成256 x 256像素的塊。像素的數量在每個縮放級別下都不同,瓷磚的數量:

地圖寬度=地圖高度= 2 level tiles

每個Tile的XY坐標系范圍從左上角(0,0),到右下角(2level–1, 2level–1)。例如,在第三級的Tile坐標范圍從(0,0)到(7,7)如下:

?

給出一對像素XY坐標,可以很容易地確定TileY坐標:

tileX = floor(pixelX / 256)

tileY = floor(pixelY / 256)

為了優化Tiles的索引和存儲, 組合二維TileXY坐標系進入一維的字符串被稱為四叉樹Key,或簡稱為“quadkeys”。在每個縮放級別,每個quadkey唯一標識一個tile。給定一個在縮放級別為3級的TileXY坐標系(3,5),quadkey確定如下:

tileX = 3 = 011 2

tileY = 5 = 101 2

quadkey = 100111 2 = 213 4 = " 213 "

?

?

3,下載地圖數據

測試數據可從google地圖下載。

?
4、顯示結果如下

5,應用顯示GPS坐標

導入地名坐標數據入庫,建webservice,查詢結果如下

?

?

?

6,應用,地形圖劃分,瀏覽。

?

?

轉載于:https://www.cnblogs.com/hyg290/p/3871239.html

總結

以上是生活随笔為你收集整理的如何开发自己的电子地图系统 web版 单机或联网的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。