您好,登錄后才能下訂單哦!
這篇文章主要講解了“區塊鏈+GIS技術怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“區塊鏈+GIS技術怎么使用”吧!
區塊鏈的發展越來越快,新的平臺、架構和算法也不斷涌現,應用接受度也越來越高。作為GIS平臺自然也能利用區塊鏈的特性給地理空間信息行業應用帶來新的可能。SuperMap iObjects for Blockchain(以下簡稱SMIB)是第一個平臺級空間信息區塊鏈產品,雖然目前功能還有限,但也算開創了先河,把區塊鏈的能力引入到了專業GIS平臺之中。
SuperMap iObjects for Blockchain(以下簡稱SMIB)是基于分布式技術的區塊鏈 GIS 基礎組件,提供空間數據上鏈、鏈上管理功能,適用于 Fabric 架構的計算和開發環境。
關于Fabric:
Fabric是超級賬本-HyperLedger的一個項目實現,是廣泛使用的超級賬本版本。
HyperLedger最初由IBM發起,現在是Linux基金會管理的一個開源軟件項目。
SuperMap GIS 10i(2020) 新特性速覽
新增覆蓋組件、桌面、服務器 GIS 產品的空間區塊鏈功能
新增區塊鏈空間數據 Fabric 與 IPFS 聯合存儲
新增空間區塊鏈數據查詢、編輯、歷史追溯功能
新增支持空間區塊鏈的地圖服務、數據服務和數據歷史服務
然后對下載包使用Unzip展開,目錄結構如下:
├── License.txt ├── dist │ ├── com.supermap.blockchain.fabric-10.1.0.jar │ └── com.supermap.blockchain.fabric-runtime-10.1.0.jar ├── docs │ ├── FabricI?\201?A?\202c?oI?\201IPFSI?\201?A?\202c?2?E?\202e?I?\2003I?\200£¨E?\200y?\201I?\200¨?u?\201?\206÷£?.pdf │ ├── FabricI?\201?A?\202c?oI?\201IPFSI?\201?A?\202c?2?E?\202e?I?\2003I?\200£¨O?\200?I?\200¨?u?\201?\206÷£?.pdf │ ├── SuperMap\ iObjects\ for\ Blockchain(Fabric)\ E?\2021O?\201A?\203E?\210μA?\203÷E?\202e?\201.pdf │ ├── SuperMap\ iObjects\ for\ Blockchain(Fabric)\ Help.chm │ └── ·A?\203I?\202E?\202C???e?\201A?\201′I?\201?A?\202c?μA?\210yamlI?\202A?\210?tE?\210μA?\203÷.pdf ├── readme.txt ├── samplecode │ ├── src │ │ ├── CertificatePictureTest.java │ │ ├── CopyDataFromUDBChain.java │ │ ├── DatasetCreateTest.java │ │ ├── FeatureTest.java │ │ ├── HistoryTest.java │ │ ├── TpsTest.java │ │ └── Utils.java │ └── 2??ˉ2u?\201μC??C?O?\210¤.jpg └── tools ├── blockchaincode │ └── supermap_chaincode.tar.gz └── fabrictools ├── Tools1¤??\237E?\2021O?\201A?\203O?\210?A?\210I?\210.pdf └── com.supermap.fabrictools-10.1.0.jar
我用的MacOS big sur,目錄中文件名有一些亂碼,估計在老Windows上編輯的。不過不影響咱的嘗鮮!
安裝后的samplecode目錄含有一些例子。以Feature的讀寫為例:
/** * @author oupp * @date 2020/5/26 21:37 */ import com.supermap.blockchain.fabric.*; import org.locationtech.jts.util.Assert; import java.util.HashMap; import java.util.List; import java.util.Map; /** * */ public class FeatureTest { private static String dtName = "datasetCreateTest"; public static void main(String[] args) { // addFeatureTest(); modifyFeatureTest(); // deleteFeatureTest(); } public static boolean addFeatureTest() { //獲取數據源 Datasource datasource = Utils.getDatasource(); //構造Feature DataFeature feature = new DataFeature(); List<AttributeInfo> fieldInfos = new java.util.ArrayList<>(); AttributeInfo fieldInfo = new AttributeInfo(); fieldInfo.setName("mm"); fieldInfo.setType(AttributeType.DOUBLE); fieldInfo.setDefaultValue(2.4); fieldInfos.add(fieldInfo); feature.setAttributeInfos(fieldInfos); feature.setFieldValue(0, 11); //feature.setFeatureData("MULTILINESTRING ((120.6689 27.98687, 120.66901 27.98684))", FeatureType.WKT); feature.setFeatureData("MULTILINESTRING ((135.6689 27.98687, 135.66901 27.98684))", FeatureType.WKT); //獲取數據集并添加對象 Dataset dt = datasource.getDataset(dtName); if (dt == null) { Assert.isTrue(false, "添加對象失敗,數據集為空"); } String strKey = dt.addFeature(feature); if (strKey != null) { System.out.println("添加記錄成功!"); return true; } System.out.println("添加記錄失敗!"); return false; } /** * 修改記錄集 */ public static void getFeatureTest() { //獲取數據源 Datasource datasource = Utils.getDatasource(); //構造待修改的Feature信息 DataFeature feature = new DataFeature(); //構造字段信息 List<AttributeInfo> fieldInfos = new java.util.ArrayList<AttributeInfo>(); AttributeInfo fieldInfo = new AttributeInfo(); fieldInfo.setName("mm"); fieldInfo.setType(AttributeType.DOUBLE); fieldInfo.setDefaultValue(2.4); fieldInfos.add(fieldInfo); feature.setAttributeInfos(fieldInfos); feature.setFieldValue(0, 8.5); feature.setFeatureData("MULTILINESTRING ((100.6689 27.98687, 100.66901 27.5025))", FeatureType.WKT); //獲取數據集 Dataset dt = datasource.getDataset(dtName); //獲取要修改的Feature的id Map map = new HashMap<String, String>(); map.put("\"mm\"", 11); DataFeatureIterator iterator = dt.getFeature(new QueryParameter(QueryType.GENERAL, map)); DataFeature feature1 = iterator.next(); String strKey = feature1.getId(); String wktGeo = feature1.getFeatureData().toString(); System.out.println("查出的數據key是:" + strKey); System.out.println("查出的數據空間信息是:" + wktGeo); } /** * 修改記錄集 */ public static boolean modifyFeatureTest() { //獲取數據源 Datasource datasource = Utils.getDatasource(); //構造待修改的Feature信息 DataFeature feature = new DataFeature(); //構造字段信息 List<AttributeInfo> fieldInfos = new java.util.ArrayList<AttributeInfo>(); AttributeInfo fieldInfo = new AttributeInfo(); fieldInfo.setName("mm"); fieldInfo.setType(AttributeType.DOUBLE); fieldInfo.setDefaultValue(2.4); fieldInfos.add(fieldInfo); feature.setAttributeInfos(fieldInfos); feature.setFieldValue(0, 8.5); feature.setFeatureData("MULTILINESTRING ((100.6689 27.98687, 100.66901 27.5025))", FeatureType.WKT); //獲取數據集 Dataset dt = datasource.getDataset(dtName); //獲取要修改的Feature的id Map map = new HashMap<String,String>(); map.put("\"mm\"",11); DataFeatureIterator iterator = dt.getFeature(new QueryParameter(QueryType.GENERAL, map)); DataFeature feature1 = iterator.next(); String strKey = feature1.getId(); //修改Feature Boolean bModify = dt.modifyFeature(strKey, feature); if (bModify){ System.out.println("修改成功" + bModify); return true; } System.out.println("修改失敗"); return false; } /** * 刪除記錄集 */ public static boolean deleteFeatureTest() { //獲取數據源 Datasource datasource = Utils.getDatasource(); //獲取數據集 Dataset dt = datasource.getDataset(dtName); //獲取待刪除的feature的id Map map = new HashMap<String,String>(); map.put("\"mm\"",4); DataFeatureIterator iterator = dt.getFeature(new QueryParameter(QueryType.GENERAL, map)); DataFeature feature1 = iterator.next(); String strKey = feature1.getId(); //刪除記錄 Boolean bDelete = dt.deleteFeatureByKey(strKey); if(bDelete){ System.out.println("刪除記錄成功!"); return true; } return false; } }
總體上還是比較簡單的。不過,因為是開發平臺,目前用起來還是復雜一些,以后在桌面軟件可以直接訪問區塊鏈上的數據,也可以通過服務器在瀏覽器里訪問,或者在移動端訪問。期待地理空間信息區塊鏈的功能越來越完善,而且能夠支持更多種的區塊鏈平臺,以及提供在不同平臺之間能夠實現互操作,與業務應用進一步綁定的更緊密。
硬件推薦配置:
處理器:雙核,2.00 GHz 或以上主頻
內存:4 GB 或以上
硬盤:80 GB 或以上
網絡適配器:100 M 或以上網絡適配器
顯示適配器:512 M 或以上顯存(安裝顯示適配器驅動),OpenGL 版本:3.0
3.2.1 普通許可
使用 SuperMap GIS 10i 系列產品許可用于驗證產品的可用性。針對Windows 平臺,提供 SuperMap 許可中心(SuperMap License Center)對許可進行配置和管理;在 Linux 平臺,提供命令行方式配置許可。此外,還提供了云許可。
在 Windows 和 Linux 操作系統下,SuperMap GIS 10i 系列產品均提供兩種許可:試用許可和正式許可,其中正式許可又分為軟許可和硬件許可。試用許可SuperMap GIS 10i 系列產品默認提供了90天的試用許可,您也可以在線申請試用許可,申請地址:https://www.supermapol.com/web/pricing/triallicense,用戶只要安裝了 SuperMap GIS 10i 系列產品,并在 Windows 平臺部署 SuperMap 許可中心,或在 Linux 平臺安裝許可驅動 ,就可以查看到對應的產品的試用許可狀態。
3.2.2 正式許可
正式許可的提供形式有兩種:軟許可和硬件許可。
A. 軟許可,是以離線或在線方式獲得合法的軟件運行許可,激活到本機,即可生效。軟許可分為單機軟許可和網絡軟許可。如果激活單機軟許可,則只能為本機提供許可服務;如果激活網絡軟許可,則可以為當前網絡中的計算機提供許可服務。注意,在許可服務器上激活網絡軟許可后,無法轉移該網絡軟許可。
B. 硬件許可,是以硬件加密鎖(簡稱“硬件鎖”)的形式獲得合法的軟件運行許可。
您可以聯系相關銷售人員購買正式許可。
3.2.3 Web許可
SuperMap GIS 產品從10i 系列開始支持 Web 許可,Web許可是一種適配云環境的許可方式。要使用 Web 許可,您需要連接到可用的 Web 版許可中心。在連接到 Web 版許可中心后,通過 Web 版許可中心授權獲得許可。
許可獲取方式
正式版 Web 許可請聯系銷售獲取,試用版許可可以在線申請獲取,申請地址:https://www.supermapol.com/web/pricing/triallicense。
使用 Web 許可
1. 配置 Web 版許可中心
您可以從超圖技術資源中心下載 Web 版許可中心的安裝包,地址為http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx。Web 版許可中心安裝包中提供的 Readme 文檔將為您介紹 Web 版許可中心安裝和使用的流程,您可以參照該文檔安裝和使用 Web版許可中心。
2. 啟用 Web 許可
Web 許可的激活在 Web 版許可中心進行。
3. 配置許可環境
在環境變量中配置 BS_LICENSE_SERVER=[本機ip]:9183,如Linux中export BS_LICENSE_SERVER=192.168.3.3:9183,windows中set BS_LICENSE_SERVER=192.168.3.3:9183,代碼中System.setProperty("BS_LICENSE_SERVER","192.168.3.3:9183")
感謝各位的閱讀,以上就是“區塊鏈+GIS技術怎么使用”的內容了,經過本文的學習后,相信大家對區塊鏈+GIS技術怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。