系代碼詳解:從數(shù)據(jù)漂移到坐標(biāo)轉(zhuǎn)換的GIS必修課)
坐標(biāo)對不上GIS就沒法做。這幾乎是每個和數(shù)據(jù)打交道的人遲早都會撞上的墻——你手里有幾十萬條帶經(jīng)緯度的記錄導(dǎo)入地圖軟件后居然偏到隔壁縣去了你從別人那里拷來的SHP文件打開一看所有圖形都沒了位置你用在線底圖加載本地?cái)?shù)據(jù)偏移肉眼可見。這些問題的幕后黑手十有八九同一個坐標(biāo)系沒對齊而EPSG代碼就是用來把它們統(tǒng)一對齊的鑰匙。EPSG代碼全稱可以理解為一套給坐標(biāo)參考系統(tǒng)CRS編寫的“身份證號碼”。只要告訴軟件或同事“我用的是EPSG:4326”“這份數(shù)據(jù)是EPSG:3857”雙方就能精確無誤地理解這些數(shù)字在地球上代表什么位置。這篇文章寫給所有被坐標(biāo)系坑過、或者剛?cè)腴TGIS/測繪/數(shù)據(jù)可視化的人看。讀完你不僅知道EPSG是什么還能自己用工具判定、轉(zhuǎn)換、驗(yàn)證坐標(biāo)系遇到數(shù)據(jù)漂移問題不再手忙腳亂。1. 坐標(biāo)對不上才是常態(tài)EPSG代碼管的是“坐標(biāo)系身份證”1.1 兩個GIS人員之間最經(jīng)典的對話“你把數(shù)據(jù)發(fā)我一下唄?!?“好的WGS84的?!?“OK我這邊也用WGS84?!?結(jié)果一疊加點(diǎn)位飛了十萬八千里。這不是段子我做過相信你也遇到過。原因往往是對方說的“WGS84”和他的數(shù)據(jù)實(shí)際用的坐標(biāo)系根本不是一回事。有人以為WGS84就是“隨便一個經(jīng)緯度”實(shí)際上經(jīng)緯度數(shù)值本身是相對某個參考橢球體計(jì)算出來的橢球參數(shù)不同同一個地點(diǎn)經(jīng)緯度讀數(shù)就不同。比如同一個物理位置在WGS84基準(zhǔn)面下測出來可能是經(jīng)度116.397度在另一種舊基準(zhǔn)面下可能就是116.396度。單看差距極小但累積起來會變成幾十米甚至上百米的位置偏差。對于出圖、選址、找邊界這些工作這種誤差就是致命的。1.2 EPSG代碼就是坐標(biāo)參考系統(tǒng)的唯一標(biāo)識符EPSG是European Petroleum Survey Group歐洲石油調(diào)查組織的縮寫他們最早建立了一套編號體系用來管理石油勘探中涉及的大地基準(zhǔn)面、坐標(biāo)系、投影方式。后來這套體系被油氣行業(yè)國際協(xié)會下屬的地球科學(xué)委員會繼承并維護(hù)慢慢演變成整個地理信息行業(yè)的全球共通語言。每個EPSG號碼對應(yīng)一套明確無誤的坐標(biāo)參考系統(tǒng)定義。當(dāng)你說“我的數(shù)據(jù)是EPSG:4326”翻譯過來就是“我用了WGS84基準(zhǔn)面上的經(jīng)緯度坐標(biāo)”。不用你背橢球參數(shù)不用你解釋投影方式對方只要去查EPSG數(shù)據(jù)庫就能拿到完整的數(shù)學(xué)定義并正確加載。這就是身份證明的意義坐標(biāo)系有千千萬萬種光靠“西安80”“北京54”“高斯克呂格”這種名字交流極其費(fèi)力。大家不在一個頻道上數(shù)據(jù)就永遠(yuǎn)合不到一起。給每個坐標(biāo)參考系統(tǒng)一個固定編號大家只需要對數(shù)字就能實(shí)現(xiàn)零歧義協(xié)作。1.3 哪些行業(yè)離不開它凡是涉及地理位置數(shù)據(jù)的行業(yè)都被EPSG覆蓋測繪工程要用地方投影坐標(biāo)系導(dǎo)航定位依賴WGS84無人機(jī)航測成果需要轉(zhuǎn)換到國家坐標(biāo)系城市管網(wǎng)GIS系統(tǒng)必須統(tǒng)一到同一套坐標(biāo)參考系統(tǒng)甚至車輛軌跡分析、外賣平臺配送范圍圈定都離不開。不懂EPSG就是不懂GIS的數(shù)據(jù)基礎(chǔ)建設(shè)。2. 從石油勘探會議到全球GIS默認(rèn)設(shè)置EPSG的來歷2.1 歐洲石油調(diào)查組織留下的遺產(chǎn)1970年代左右歐洲石油勘探行業(yè)面臨一個很現(xiàn)實(shí)的問題不同國家、不同公司、不同工區(qū)使用了各自定義的大地基準(zhǔn)和投影方式勘探數(shù)據(jù)難以共享。于是歐洲石油調(diào)查組織開始研究并發(fā)布一套統(tǒng)一的地球科學(xué)數(shù)據(jù)規(guī)范把當(dāng)時常見的坐標(biāo)參考系統(tǒng)、基準(zhǔn)面轉(zhuǎn)換關(guān)系都收錄進(jìn)去每一條記錄分配一個數(shù)字標(biāo)識。那個年代沒有互聯(lián)網(wǎng)這套規(guī)范以紙質(zhì)技術(shù)報(bào)告和磁帶數(shù)據(jù)的形式流傳。但它管用因?yàn)槭涂碧绞侨蚧袠I(yè)跨區(qū)域鉆井平臺定位、地震測線布置、儲量圖件拼接都對坐標(biāo)系精度有極高要求。大家很快發(fā)現(xiàn)用統(tǒng)一的編號來指代坐標(biāo)系比在每份報(bào)告里重復(fù)寫參數(shù)省事得多EPSG編號由此成為行業(yè)事實(shí)標(biāo)準(zhǔn)。2.2 由權(quán)威行業(yè)機(jī)構(gòu)維護(hù)的公共數(shù)據(jù)集今天的EPSG數(shù)據(jù)集由油氣行業(yè)國際協(xié)會下屬的地球科學(xué)委員會維護(hù)版本持續(xù)更新內(nèi)容公開透明。這個數(shù)據(jù)集不僅記錄編號還包含每個坐標(biāo)參考系統(tǒng)的完整數(shù)學(xué)定義使用哪個橢球體、基準(zhǔn)面怎么轉(zhuǎn)換、投影方法是什么、中央經(jīng)線在哪里、單位是什么。由于它是行業(yè)協(xié)作產(chǎn)物而非商業(yè)公司的私有標(biāo)準(zhǔn)幾乎所有GIS軟件都內(nèi)置了EPSG數(shù)據(jù)集。QGIS、ArcGIS、GDAL、PostGIS、PROJ庫、各類地圖SDK打開安裝包就能識別EPSG:4326、EPSG:3857這些代碼。正因?yàn)槊赓M(fèi)開放、無國界限制、無專利壁壘它成了GIS開發(fā)者之間的共同語言。2.3 數(shù)據(jù)庫里不是只有數(shù)字還有數(shù)學(xué)定義EPSG數(shù)據(jù)集里的每條記錄可以理解為一張完整的“身份卡”編號只是名字真正核心的是底層數(shù)學(xué)定義。例如EPSG:4326的完整定義包括WGS84基準(zhǔn)面、經(jīng)緯度單位、長半軸和扁率等橢球參數(shù)。而EPSG:3857則是基于WGS84橢球構(gòu)造的Web墨卡托投影坐標(biāo)系定義里包含投影方法、原點(diǎn)、單位等。這也是為什么你在QGIS里選EPSG:4326和EPSG:3857時軟件能瞬間換算——這不是套公式而是從EPSG數(shù)據(jù)庫里讀取了兩套明確定義的坐標(biāo)系再用PROJ庫執(zhí)行嚴(yán)格的空間數(shù)學(xué)轉(zhuǎn)換。3. 基準(zhǔn)面、經(jīng)緯度、投影把“坐標(biāo)系”這件事徹底說明白3.1 地球不是標(biāo)準(zhǔn)球體基準(zhǔn)面決定了“從哪算起”地球本質(zhì)上是一個近似橢球的形狀不同國家在不同年代用不同技術(shù)測量對地球形狀的描述不完全一致。這就產(chǎn)生了很多基準(zhǔn)面有的用長半軸6378137米扁率1/298.257223563有的用其他橢球參數(shù)?;鶞?zhǔn)面就是“地球三維模型起算原點(diǎn)”的組合。生活類比你畫房子平面圖要先確定門的朝向往哪開坐標(biāo)也是不管用什么測繪手段都得先約定一個參考基準(zhǔn)面也不知道是從起點(diǎn)算還是從墻角算。不同基準(zhǔn)面就像不同版本的“世界地圖模板”同一個地點(diǎn)在這套模板上是東經(jīng)116度換套模板就是東經(jīng)116度再加幾米偏差。3.2 經(jīng)緯度只是半成品坐標(biāo)經(jīng)緯度本身是一種球面坐標(biāo)它告訴你在球面上的角度位置。但是當(dāng)你需要計(jì)算面積、測量長度、規(guī)劃路線時球面坐標(biāo)沒法直接使用——你不能在三維球面上用勾股定理算兩條街道的直線距離。更關(guān)鍵的是經(jīng)緯度并不天然屬于某一套坐標(biāo)參考系統(tǒng)。它必須配合基準(zhǔn)面才有意義。所以嚴(yán)格來說不存在“裸的經(jīng)緯度數(shù)據(jù)”每一份經(jīng)緯度數(shù)據(jù)都暗含一套基準(zhǔn)面假設(shè)只是很多人在導(dǎo)出數(shù)據(jù)時把這個假設(shè)丟了。3.3 投影是“把橘子皮攤平”的數(shù)學(xué)魔法地球是個球面計(jì)算機(jī)屏幕是平面底圖和矢量數(shù)據(jù)必須投影到平面上才能顯示。投影的本質(zhì)是把球面坐標(biāo)通過特定數(shù)學(xué)規(guī)則映射到平面坐標(biāo)。不同投影有不同的變形特性有些保證角度正確等角投影有些保證面積正確等積投影但無法同時保證兩者。墨卡托投影在低緯度地區(qū)看起來很正常到了高緯度地區(qū)面積夸張放大格陵蘭島被畫得巨大無比。Web墨卡托更是把全球當(dāng)成一個正方形瓦片來處理最適合互聯(lián)網(wǎng)地圖切片但不適合做面積計(jì)算。高斯-克呂格投影則在中央經(jīng)線附近變形極小適合城市級別的精密測繪。所以選擇投影不是“哪個最好”而是“哪個最符合當(dāng)前場景”。GPS定位用WGS84經(jīng)緯度Web地圖渲染用Web墨卡托省級測繪成果用高斯-克呂格3度帶跨境項(xiàng)目用UTM。3.4 EPSG、WKT、Proj4字符串同一種定義的三張面孔同一套坐標(biāo)參考系統(tǒng)可以用三種方式表達(dá)EPSG號碼是最簡潔的引用方式WKTWell-Known Text是一段描述性文本包含了橢球參數(shù)、基準(zhǔn)面、投影方式等完整信息Proj4字符串是PROJ庫使用的參數(shù)化描述。GEOGCS[WGS 84, DATUM[WGS_1984, SPHEROID[WGS 84,6378137,298.257223563]], PRIMEM[Greenwich,0], UNIT[degree,0.0174532925199433]]這段WKT就是EPSG:4326的定義。很多人做數(shù)據(jù)交換時只拷文件不拷投影定義文件結(jié)果拿到手全是裸坐標(biāo)根本無法判斷屬于哪個EPSG。所以專業(yè)做法是傳輸數(shù)據(jù)時坐標(biāo)系元數(shù)據(jù)必須和坐標(biāo)數(shù)據(jù)一起走。4. 高頻代碼速查從世界通用到國內(nèi)項(xiàng)目怎么選4.1 三個最常見的代碼4326、3857、4490EPSG名稱典型場景4326WGS84地理坐標(biāo)系GPS定位原始坐標(biāo)、衛(wèi)星數(shù)據(jù)、多數(shù)標(biāo)準(zhǔn)經(jīng)緯度文件3857WGS84 Web墨卡托投影互聯(lián)網(wǎng)地圖瓦片渲染、Web前端定位展示4490中國2000國家大地坐標(biāo)系CGCS2000經(jīng)緯度國內(nèi)測繪成果、國土空間規(guī)劃數(shù)據(jù)4326是全世界最通用的經(jīng)緯度坐標(biāo)代碼GPS設(shè)備默認(rèn)輸出、GeoJSON默認(rèn)采用?,F(xiàn)階段幾乎所有Web后端存儲經(jīng)緯度都直接用4326。3857則是前端地圖行業(yè)繞不開的代碼主流的Web地圖平臺切片規(guī)則都基于Web墨卡托。如果你把4326經(jīng)緯度直接當(dāng)成平面坐標(biāo)丟給前端地圖引擎點(diǎn)位會全部錯亂因?yàn)榈貓D引擎默認(rèn)加載的數(shù)據(jù)坐標(biāo)體系是3857或者經(jīng)過WGS84經(jīng)緯度動態(tài)轉(zhuǎn)換的。4490是CGCS2000的經(jīng)緯度代碼。中國2000國家大地坐標(biāo)系是當(dāng)前國內(nèi)法定的統(tǒng)一基準(zhǔn)很多測繪規(guī)劃成果都要求使用它。CGCS2000與WGS84在大部分民用場景下差異不大但涉及高精度工程項(xiàng)目必須嚴(yán)格區(qū)分。4.2 全球UTM與國內(nèi)高斯-克呂格投影的代碼規(guī)律UTM投影把全球分成60個經(jīng)度帶每帶6度。北半球代碼落在32601到32660之間南半球代碼落在32701到32760之間。例如EPSG:32650代表WGS84UTM北半球50帶覆蓋我國新疆、青海、西藏部分地區(qū)。國內(nèi)大比例尺測繪更常用高斯-克呂格投影分6度帶或3度帶。6度帶從西到東編號13到233度帶編號25到45。相應(yīng)的EPSG編號集中在特定區(qū)間例如CGCS2000的6度帶高斯投影分布在EPSG:4491附近CGCS2000的3度帶高斯投影分布在EPSG:4513之后。使用投影坐標(biāo)系時一定要帶上帶號。同樣是CGCS2000高斯投影三十九帶和四十帶東西向有約3度經(jīng)度的差別在平面坐標(biāo)上直接相差幾萬米對不上就很正常了。4.3 地圖服務(wù)、測繪數(shù)據(jù)、GPS設(shè)備的最佳搭配GPS設(shè)備原始輸出建議保留為EPSG:4326不做任何投影轉(zhuǎn)換。數(shù)據(jù)需要入庫做統(tǒng)計(jì)分析時也建議統(tǒng)一到4326因?yàn)樗乔蛎孀鴺?biāo)全球通用不會因?yàn)樵綆栴}產(chǎn)生斷裂。如果要做Web地圖展示或底圖疊加尤其涉及瓦片數(shù)據(jù)時用3857作為顯示坐標(biāo)系。前端端負(fù)責(zé)把4326動態(tài)轉(zhuǎn)換到3857或者直接使用支持坐標(biāo)系轉(zhuǎn)換的地圖組件。國內(nèi)測繪項(xiàng)目最終成果如果需要交給政府或規(guī)劃部門務(wù)必明確使用CGCS2000相關(guān)代碼。若成果用于城建施工則會指定具體的3度帶高斯投影代碼這時必須嚴(yán)格按照要求設(shè)置選錯中央經(jīng)線整幅圖紙偏。5. 實(shí)操拿到一份坐標(biāo)數(shù)據(jù)怎么找準(zhǔn)它的EPSG5.1 第一步查元數(shù)據(jù)別上來就猜拿到地理位置數(shù)據(jù)第一反應(yīng)不是打開軟件試坐標(biāo)而是找元數(shù)據(jù)。數(shù)據(jù)生產(chǎn)方如果規(guī)范都會在原始文件里附一份坐標(biāo)系說明可能是名為prj的投影文件、元數(shù)據(jù)XML、配套文檔或是數(shù)據(jù)庫表字段注釋。最常見的錯誤是拿到別人導(dǎo)出的CSV文件里面只有經(jīng)緯度兩列沒有任何坐標(biāo)系信息。這種情況下唯一能做的合理假設(shè)是EPSG:4326但必須向數(shù)據(jù)來源方確認(rèn)。盲目假設(shè)而實(shí)際數(shù)據(jù)是其他坐標(biāo)系后續(xù)所有疊加分析都會出錯。5.2 第二步用已知地物坐標(biāo)反推如果確實(shí)聯(lián)系不到數(shù)據(jù)生產(chǎn)方還可以通過坐標(biāo)值本身反推。經(jīng)緯度坐標(biāo)通常范圍在-90到90和-180到180之間一眼能認(rèn)出是地理坐標(biāo)系。如果出現(xiàn)X值500000左右、Y值3200000左右這種量級多半是投影坐標(biāo)系且疊加了坐標(biāo)偏移。舉個例子X在500000附近是高斯-克呂格投影在中央經(jīng)線平移后的典型值Y是赤道距離這是投影坐標(biāo)體系的常見特征。接著根據(jù)區(qū)域的經(jīng)度范圍推算中央經(jīng)線用一個特定地點(diǎn)附近的地標(biāo)提取那份未知坐標(biāo)系的坐標(biāo)值再和已知EPSG:4326的同一地標(biāo)對比就能反推出中央經(jīng)線和帶號。這個過程可能試錯兩三輪但能自動縮小候選EPSG范圍。5.3 第三步在QGIS、GDAL、PostGIS里落地確認(rèn)或假設(shè)EPSG后就要把它寫到數(shù)據(jù)里。QGIS里右鍵圖層打開屬性找到“源”一欄有專門的坐標(biāo)系設(shè)置。如果原始數(shù)據(jù)沒有被定義坐標(biāo)系可以用“指派投影”工具為它安裝投影定義如果已經(jīng)有定義但需要轉(zhuǎn)換用“重投影圖層”工具輸出到新的坐標(biāo)系。GDAL命令行更自動化。查看坐標(biāo)系的命令是gdalinfo格式轉(zhuǎn)換和重投影用ogr2ogr比如把一份ESRI Shapefile從EPSG:4326重投影到EPSG:3857可以寫成ogr2ogr -t_srs EPSG:3857 output.shp input.shp -t_srs EPSG:4326 -lco ENCODINGUTF-8PostGIS數(shù)據(jù)庫處理也常用。建表后給幾何字段設(shè)置SRID再根據(jù)需要變換坐標(biāo)ALTER TABLE poi ALTER COLUMN geom TYPE geometry(Point, 3857) USING ST_Transform(geom, 3857);不要怕坐標(biāo)轉(zhuǎn)換關(guān)鍵是每次轉(zhuǎn)換都明確定義“源坐標(biāo)系”和“目標(biāo)坐標(biāo)系”兩者都用EPSG編號寫清楚就不會鬧烏龍。5.4 決策鏈整理遇到一份新數(shù)據(jù)我的判斷順序是這樣的確認(rèn)是否帶投影文件或元數(shù)據(jù)有就直接采用沒有就用坐標(biāo)數(shù)值形態(tài)判定是經(jīng)緯度還是平面坐標(biāo)是平面坐標(biāo)就分析X量級結(jié)合區(qū)域經(jīng)度推算中央經(jīng)線和帶號先假定一個最可能的EPSG加載到軟件里疊加已知底圖檢查偏差大就換下一個候選最終確定了坐標(biāo)系立刻給數(shù)據(jù)寫入正確的SRID定義并保存一份轉(zhuǎn)換后的4326副本用于后續(xù)通用處理。這套流程在90%以上的項(xiàng)目中都能解決問題剩下的10%可能涉及多源數(shù)據(jù)沖突或非標(biāo)準(zhǔn)自定義投影就要求助于更專業(yè)的測繪技術(shù)支持。6. 錯用EPSG的代價三次坐標(biāo)漂移的真實(shí)排查過程6.1 案例經(jīng)緯度數(shù)據(jù)被當(dāng)成Web墨卡托渲染某可視化項(xiàng)目后端從數(shù)據(jù)庫讀出經(jīng)緯度后直接填充到前端地圖組件的經(jīng)緯度字段結(jié)果所有點(diǎn)都集中在地圖上一個不可思議的角落。排查時發(fā)現(xiàn)前端組件默認(rèn)要求WGS84經(jīng)緯度格式但接口返回的數(shù)據(jù)被組件內(nèi)部誤判成了Web墨卡托平面坐標(biāo)來處理。正因?yàn)槟繕?biāo)坐標(biāo)系是3857而喂進(jìn)去的是“不完整的經(jīng)緯度”疊加之后位置自然全錯。解決辦法是把經(jīng)緯度字段和坐標(biāo)系聲明清楚并讓組件明確使用EPSG:4326進(jìn)行投影轉(zhuǎn)換。這類問題在前后端對接中非常多見核心就是沒有明確數(shù)據(jù)的SRID。6.2 案例CGCS2000與WGS84混淆邊界線偏移某項(xiàng)目拿到的規(guī)劃紅線數(shù)據(jù)元數(shù)據(jù)標(biāo)注“CGCS2000經(jīng)緯度”但同事在導(dǎo)入數(shù)據(jù)庫時順手寫成了EPSG:4326。兩條邊界疊上去之后發(fā)現(xiàn)紅線與底圖存在約半米的整體偏移。半米在普通展示里無所謂但在施工放線時已經(jīng)足夠把管線位置裝錯。有經(jīng)驗(yàn)的測繪人員會用“已知高精度控制點(diǎn)”來驗(yàn)證坐標(biāo)參考系統(tǒng)。給一份WGS84坐標(biāo)和一份CGCS2000坐標(biāo)放在同一個位置看它們差多少誤差在幾厘米內(nèi)說明可能是同一套體系差了半米、一米就要檢查是否是基準(zhǔn)面混淆導(dǎo)致的系統(tǒng)性平移。6.3 案例老數(shù)據(jù)缺投影定義坐標(biāo)張冠李戴某歷史數(shù)據(jù)文件只有圖形和屬性沒有任何坐標(biāo)系信息圖層表現(xiàn)為一串幾千到幾萬量級的X/Y數(shù)值。直觀判斷這大概率是高斯-克呂格投影的平面坐標(biāo)但具體是哪個帶、中央經(jīng)線是多少完全沒有依據(jù)。排查時先用已知城區(qū)地物做錨點(diǎn)把該地物的那份未知坐標(biāo)值查出來再套用不同的CGCS2000投影帶計(jì)算對應(yīng)經(jīng)緯度和真實(shí)經(jīng)緯度對比。試到某個帶號時誤差最小就可以確定EPSG。這個過程我用過不止一次確認(rèn)后立刻用“指派投影”寫入SRID再重投影成4326備份。6.4 排查時統(tǒng)一用EPSG號碼對比的要點(diǎn)坐標(biāo)系排查過程中最忌諱只比較“坐標(biāo)系名字”。同一套坐標(biāo)系在不同軟件里命名方式可能不同WGS84可以叫“WGS 84”“WGS_1984”“EPSG:4326”別人嘴里的“WGS84”也可能實(shí)際是CGCS2000的框架坐標(biāo)。正確做法是把所有數(shù)據(jù)源的EPSG號碼統(tǒng)一列出來逐個標(biāo)注對應(yīng)數(shù)據(jù)和坐標(biāo)值然后用同一底圖做疊加驗(yàn)證。見一個數(shù)字就查一次EPSG絕不靠感覺。數(shù)據(jù)一旦發(fā)生漂移立刻檢查SRID聲明是否正確、投影參數(shù)中央經(jīng)線、帶號是否與區(qū)域匹配十之八九能揪出問題。7. 日常實(shí)用技巧與個人經(jīng)驗(yàn)7.1 讓GIS軟件默認(rèn)提示坐標(biāo)系設(shè)置建議在QGIS等桌面GIS軟件里開啟“無投影時提示”功能當(dāng)加載的數(shù)據(jù)沒有SRID定義時軟件會彈窗讓你選擇??此贫嗔艘徊讲僮鲄s能大幅降低后續(xù)分析出錯概率。我見過太多人加載數(shù)據(jù)后軟件彈窗直接被點(diǎn)掉閉著眼睛選了默認(rèn)選項(xiàng)后面所有流程全廢。7.2 保存一份自己的EPSG速查表不必死記編號但要記錄自己業(yè)務(wù)范圍內(nèi)最常用的十幾個。我辦公桌邊上都有這么一張表按項(xiàng)目類型分類涉及GPS數(shù)據(jù)用4326涉及Web地圖展示用3857國內(nèi)規(guī)劃報(bào)送用4490具體城建項(xiàng)目必須到測繪部門確認(rèn)目標(biāo)坐標(biāo)系。一個通用建議做任何數(shù)據(jù)交付時配套說明文件里寫上“坐標(biāo)系EPSG:xxxx”列名寫清楚接收方就不會再問你“這個坐標(biāo)是什么坐標(biāo)系”了。7.3 與前后端協(xié)作時強(qiáng)調(diào)坐標(biāo)系參數(shù)數(shù)據(jù)對接過程中最容易被忽略的就是坐標(biāo)系元數(shù)據(jù)。接口文檔里寫“返回經(jīng)緯度坐標(biāo)”卻不寫“坐標(biāo)系為EPSG:4326”前端拿到數(shù)據(jù)后按照猜想的坐標(biāo)系處理位置就偏了。我現(xiàn)在做接口設(shè)計(jì)時都強(qiáng)制在字段注釋里標(biāo)注坐標(biāo)系數(shù)據(jù)庫表字段也以GEOM形式保存SRID前端請求一次坐標(biāo)轉(zhuǎn)換接口就都能對齊。代碼層面留一行PROJ轉(zhuǎn)換遠(yuǎn)比事后救火簡單。EPSG這東西第一次接觸覺得抽象理解之后會發(fā)現(xiàn)它是整個數(shù)據(jù)地圖世界最基礎(chǔ)的常識。你不需要背下全部編號只需要清楚它的定義、會查詢、敢確認(rèn)再配合幾個順手的工具就能在項(xiàng)目里少走太多彎路。