一種針對第三方線上地圖的動態勻色方案淺析
文章版權由作者李曉暉和部落格園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
1.背景
在顏值當道講究投屏酷炫的當下,系統不設計成黑科技風,業主爸爸要求的高大上就沒法體現。尷尬的是不少專案資料並不是自己掌握,必須採用第三方的WMTS服務,比如用國土局的、測繪院的或者內網天地圖的線上地圖服務,可是這些底圖服務百分之九十九的都是淺色系配圖。試想深色版設計的圖表和背景,配上一個白色系的淺色風格地圖,這畫面確實辣眼睛。
如下:
2.瓦片實時勻色的幾種方案討論
2.1 方案1——逐畫素RGB比對變換
當前端獲取到瓦片後,逐畫素讀取瓦片的rgb,當瓦片的rgb等於某個值時,則將其賦色成另一個值,從而改變瓦片的顏色。最後將改變顏色後的瓦片拼接起來,便成了另一種風格的地圖。
根據這個思路,我們是比較容易實現初步的轉換的。但是缺點非常明顯:
a.如果完全根據rgb顏色是否一致判斷,即使同一種要素也會出現勻色不均的問題。比如一條道路,其外框和內框是有顏色漸變的,則非常容易出現內框顏色與勻色一致,但是由於外框顏色有些許變化導致沒有進行勻色變換。
b.為了勻出一張符合要求的圖,必須針對所有顏色值進行勻色對應設計,大大增加了此變化對照表的內容。此問題同a中問題其實是一樣的。
2.2方案2——逐畫素顏色灰度閾值比對變換
這裡我們提出一個顏色灰度值的概念,即將rgb三色值相加後除以3,所得值的區間將固定在0到255範圍內,從而實現了將一個(r,g,b)三維資料變成了一個一維的值,進而便於進行閾值設定。
方案1中的流程則變成了,逐畫素判斷該畫素的顏色灰度值是否在一個區間內,如果在則將該顏色值變換為另一個色值。
此方案的優點在於:只需要設定幾個區間的閾值和對應色值變化,就能完成瓦片中所有色值的勻色。
缺點在於:閾值粒度不好控制,容易出現誤勻現象,但是如果勻色閾值區間足夠小,是可以儘量避免的。不過一個顏色灰度值所對應的RGB的值可能是多種組合,此情況依然會導致誤勻現象。
不過綜合考慮實施便捷度,我們最後採用了方案2。
3.進一步優化
3.1 瓦片後臺勻色並快取
以上方案均是考慮前端展示時進行實時渲染,這樣會導致同一瓦片資料每次載入時均需勻色,降低了展示的效能。如果將瓦片勻色機制放入後臺,後臺進行瓦片請求並勻色處理,最後快取至伺服器。當同一瓦片再次請求時,判斷瓦片是否已快取,如快取則直接獲取。沒有,則繼續上一機制。
3.2通過配置檔案支援多套勻色方案切換
將勻色規則處理成配置檔案,則針對同一資料來源可以生成多套風格的勻色配置檔案。系統傳入風格引數後,後臺系統自動讀取對應的勻色配置檔案生成勻色規則。
4.效果展示
通過對淺色天地圖進行深色勻色,並將部分割槽域透明化處理,疊加上對應色系的行政邊界資料後得到如下展示效果:
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^
相關推薦
一種針對第三方線上地圖的動態勻色方案淺析
文章版權由作者李曉暉和部落格園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/ 1.背景 在顏值當道講究投屏酷炫的當下,系統不設計成黑科技風,業主爸爸要求的高大上就沒法體現。尷尬的是
Citco推出CitcoConnect:一種針對安全資料共享和數字投資的全新獨立解決方案
紐約--(美國商業資訊)--金融服務行業全球領先的服務提供商Citco Group of Companies (“Citco”)今天宣佈推出CitcoConnect,這一全新的數字解決方案用於自動化和簡化對潛在投資者的管理流程,包括一個對另類基金進行初始投資的線上工具。 該
一種針對滑動變阻器AD值採集線性化處理演算法
在專案中,用到了採集旋鈕(滑動變阻器)的AD值,然後需要將資料傳送給上位機。方法比較簡單,但是有個要求就是:旋鈕旋轉的角度(輸出阻值,Rx表示)需要和傳送給上位機的的資料(Y表示)成線性關係(正比例關係)。為了達到此要求,動用了一些數學思維,對整個過程進行了分析
一種根據URL引數條件動態生成URL的方法
最近做了一個產品列表頁類似於搜尋列表頁, 功能比較簡單,比搜尋頁複雜的邏輯在於,生成各個查詢條件的URL。我們的連結如下:http://xxx.xxx.xxx/product/list.html?spm=0.0.0.0.fCULEV&noHistoryApi=1&a
【除錯技巧】一種針對正在執行的程序中途寫值快速除錯的方法
// 程式介面執行上文 #if 1 int test_fd = open ("/tmp/test_file", O_RDWR|O_CREAT); char test_buff[16] =
unity5打包機制下,一種資源打ab和資源管理的方案
remove 自己 return game tor 基礎 resource mea easyn unity5打包機制下,一種資源打ab和資源管理的方案。1.打ab: 1.設置平臺 2.清楚所有資源的assetbundlename: string[] abN
【Unity】用Shader實現圖片的區域遮罩,支援半透明,實現地圖動態上色功能
一個專案,做世界地圖時,希望未開啟的地塊是線稿,新地塊開啟時,做一個上色處理。 想到的方案就是:上了色的彩圖蓋線上稿上,然後用mask 控制彩圖的區域性顯隱。 網上找了一個,可以半透明遮罩的shader:https://www.jianshu.com/p/1d9d439c28fa 要控制不同區塊
一種基於OpenCV的三維重建實現方案
摘 要 本文以計算機視覺三維重建技術為研究物件,分析了開放計算機視覺函式庫OpenCV中的三維重建模型,通過六個步驟,特別是攝像機標定和立體匹配中極線約束方法的使用,給出了基於OpenCV的三維重建演算法。該演算法充分發揮了OpenCV的函式庫功能,提高了計算的精度效率,具有良好的跨平臺移植性,可以滿足各
[UWP]一種利用Behavior 將StateTrigger集中管理的方案
不做開篇廢話,我們發現: AdaptiveTrigger 不夠好 我們知道,UWP可以在一個頁面適應不同尺寸比例的螢幕。一般來說這個功能是通過官方推薦的AdaptiveTrigger 進行的。 比如這樣: <VisualState x:Name="NarrowView"> <Visu
一種優化 ListView 初始化載入速度的方案
我在使用 ListView 的時候,有一個問題困擾我挺久:能不能控制 ListView 初始化時載入的Item數量? Adapter的getCount方法?我一直以為getCount方法是用來告訴 Listview,Adapter有多少資料的,而ListVi
一種解決Impala自定義屬性查詢的方案
背景 在使用Impala做自助分析的過程中,我們經常發現自定義屬性的需求,通常情況下使用者會將這種不確定key的欄位全部塞到一個MAP欄位中,然後通過Impala的複雜結構查詢語法進行查詢,目前Impala只支援Parquet格式表的schema中使用複雜資料
一種生成動態口令的方法
JavaScript 動態口令 'use strict' let MD5 = require('blueimp-md5'); let UUIDv1 = require('uuid/v1'); const T = 30; let secret =
繪制二維障礙柵格地圖的一種方法1(局部地圖的繪制)
tro 註意 應該 net 部分 size https 方便 領域 博客轉載自:https://blog.csdn.net/zhubaohua_bupt/article/details/72923373 局部地圖的繪制 二維占據柵格地圖(柵格地圖)廣泛應用於移動機器人導航領
cpp中vector動態數組(一種container)的簡單用法
array insert original tor 運行 clas div 自動 erase vector<int> num; for (int i=0; i<10; ++i)num.push_back(i); num.push_b
動態內表的一種實現方式
loop days assign pla eat -name alc str ack SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } .L0S
一種服務可持續的網路功能延服務功能鏈遷移的動態資源分配方法
寫在前面,本文為 Autonomic resource arbitration and service-continuable network function migration along service function chain 學習筆記,為對NFV感
一種實時映象的伺服器資料線上備份方法與流程
www.syncnavigator.cn SyncNavigator 做資料同步時所支援的資料庫型別: 支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 來源資料庫和目標資料庫可以版本不同
一種動態跟蹤TCP連線與程序相關性的方法
描述 TCP連線跟蹤是網路流控和防火牆中的一項重要的基礎技術,當運用於主機時,連線必與程序相關聯,要麼是主動發出的,要麼是被動接受的,當後代程序被動態建立時,由於檔案描述符的繼承,一個連線就會被這個程序樹中的所有程序共享;當一個程序發出或接受多個連線時,就擁有了多個連線。本方法可用於網路安
一種攔截Linux動態庫API的方法及裝置
描述 攔截Linux動態庫API的常規方法,是基於動態符號連結覆蓋技術實現的,基本步驟是 1. 重新命名要攔截的目標動態庫。 2. 建立新的同名動態庫,定義要攔截的同名API,在API內部呼叫原動態庫對應的API。這裡的同名是指與重新命名前動態庫前的名稱相同。 顯而易見
(一)ArcGIS Server之釋出動態地圖服務
1.引言 在WebGIS開發過程中,我們所需要的資料不僅僅來自於ArcGIS online,有時候我們需要釋出自己的資料服務,在本篇部落格中主要說明一下如何利用ArcGIS Server釋出自己的動態地圖服務。 2.什麼是地圖服務?