天地图电子地图矢量地图底图结合图像学实现风格底图地图

news2024/11/24 10:28:28

   一、基础概念     

        天地图(TianDiTu),全称为“国家地理信息公共服务平台”,是中国国家测绘地理信息局主导建设的国家级地理信息服务平台。它提供了一系列的地图服务和地理信息数据,包括基础地理信息、专题地理信息、地理编码、地名地址查询、三维地图浏览等功能。天地图的目标是为政府决策、社会管理和公众生活提供权威、统一、标准的地理信息服务。

天地图的特点包括:

1. 权威性:数据来源于国家测绘地理信息局,确保了数据的权威性和准确性。

2. 全面性:提供全国范围的基础地理信息和专题地理信息。

3. 开放性:提供Web API和SDK,便于第三方开发人员集成地理信息服务。

4. 互动性:用户可以进行地名搜索、路线规划、三维浏览等交互式操作。

5. 安全性:遵循国家信息安全等级保护要求,保障数据安全。

天地图的服务主要包括:

•电子地图服务:提供矢量地图、影像地图、地形图等多种地图样式。

•地名地址服务:支持地名地址查询、地名地址编码等。

•三维地图服务:提供三维地图浏览,增强空间感知。

•专题地图服务:如人口分布、气候、交通等专题地图。

•定制化服务:根据用户需求提供定制化的地理信息服务。

天地图广泛应用于国土规划、环境保护、应急救援、交通管理、旅游服务等多个领域,为用户提供便捷、准确的地理信息服务。如果您需要使用天地图的服务,可以访问其官方网站注册账号,并按照指引使用相关功能。

        图像学(Iconology)是艺术史研究的一个分支,专注于探索图像的含义、符号和象征,以及它们在历史和文化中的作用。图像学不仅仅关注艺术作品的表面形式,而是深入挖掘图像背后的深层含义,理解图像如何反映并影响社会、文化和哲学观念。这一学科的发展可以追溯到19世纪末期,但真正被系统化是在20世纪,主要得益于像恩斯特·贡布里希(Ernst Gombrich)、阿洛伊斯·李格尔(Alois Riegl)、埃里希·帕诺夫斯基(E.H. Panofsky)和阿比·瓦尔堡(Aby Warburg)这样的学者的工作。

图像学的三个层次分析,最初由帕诺夫斯基提出,包括:

1. 前图像志描述(Pre-iconographic Description):这一阶段涉及对艺术作品的直接观察和描述,记录作品中的所有元素和细节,不涉及任何解释。

2. 图像志分析(Iconographic Analysis):在此阶段,研究者识别并解释图像中的符号和传统主题,比如神话、圣经故事或历史事件,这要求对文化、历史和宗教背景有深刻的理解。

3. 图像学解释(Iconological Interpretation):这是最深层次的分析,旨在揭示作品的内在意义或象征价值,探讨作品如何反映特定时代的思想、信仰和社会状况。

图像学的应用不仅限于绘画,还扩展到雕塑、建筑、摄影和其他视觉艺术形式,甚至可以用于分析非艺术领域的图像,如商标、广告和政治宣传。

图像学与图像志(Iconography)的区别在于,图像志主要关注图像的分类和识别,而图像学则深入探讨图像的意义和影响。图像学研究者通常会结合历史文献、哲学理论、社会学和心理学来全面理解图像的多维度含义。

本次应用主要是“图像学公式”在gis风格底图的实践应用,如果是在图像处理或计算机视觉的上下文中,可能是指用于分析、修改或生成图像的各种算法和数学表达式。在这些领域,有许多公式用于不同的目的,例如:

1. 图像增强:

•亮度调整:

•对比度调整:对比度通常通过拉伸或压缩图像的动态范围来实现,这可能涉及到直方图均衡化或对比度限制的自适应直方图均衡化(CLAHE)等技术。

2. 图像转换:

3. 边缘检测和梯度计算:

•图像梯度:

•Sobel算子:

•梯度幅值:

4. 色彩空间转换:

•RGB转灰度:

5. 图像滤波:

•高斯滤波器:

然而,如果你所指的“图像学公式”是在艺术史和图像学研究的语境下,那么就不存在具体的数学公式。在这种情况下,“图像学”更多地是一种分析图像符号和含义的方法论,它依赖于对图像的视觉解读、文化背景和历史脉络的理解。这种类型的图像学不使用数学公式,而是采用批判性思维和学术研究来解析图像的深层意义。

二、gis风格底图实践应用

“风格地图”(Style Map)这个概念通常被用来描述在不同艺术运动或风格之间的关系和位置。在艺术史中,风格地图可以帮助我们理解不同艺术流派的发展历程,它们之间的相互影响以及它们各自的特点。例如,从文艺复兴到现代主义,我们可以绘制出一个风格地图,展示出古典主义、浪漫主义、现实主义、印象派、后印象派、表现主义、立体主义、抽象表现主义等等的艺术风格演变。而在机器学习和人工智能领域,特别是在图像生成和风格迁移技术中,风格地图可以指代一种算法上的概念。这种概念允许用户在多个预定义的风格之间进行插值,从而创造出新的、混合的风格效果。例如,给定两个或更多的风格图像,AI系统能够创建出一个风格空间,在这个空间中,不同的点代表了不同的风格。用户可以通过选择空间中的不同位置来控制输出图像的风格特征,从而实现风格的连续变化。如果是在AI图像生成的背景下讨论风格地图,它可能涉及复杂的神经网络模型,如生成对抗网络(GANs)、变分自动编码器(VAEs)或其变种,这些模型能够在高维空间中捕获和操纵风格特征。

1、配置天地图服务及风格信息

wyl: {
  layerCode:'wyl',
  sourceType:'XYZ',
  projection: "EPSG:4326",
  isRLayerPanel: true,
  title:'午夜蓝',
  crossOrigin: 'anonymous',
  themeStyle:'blue',
  opacity: 1,
  url:'https://t{0-7}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&tk=46a08ed576eb9ad93d6a465a55544a5b',
  visible: true
},
black: {
  layerCode:'black',
  sourceType:'XYZ',
  projection: "EPSG:4326",
  isRLayerPanel: true,
  title:'中国黑',
  crossOrigin: 'anonymous',
  themeStyle:'black',
  opacity: 1,
  url:'https://t{0-7}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&tk=46a08ed576eb9ad93d6a465a55544a5b',
  visible: false
},
gray: {
  layerCode:'gray',
  sourceType:'XYZ',
  projection: "EPSG:4326",
  isRLayerPanel: true,
  title:'中国灰',
  crossOrigin: 'anonymous',
  themeStyle:'gray',
  opacity: 1,
  url:'https://t{0-7}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&tk=46a08ed576eb9ad93d6a465a55544a5b',
  visible: false
},
reversal: {
  layerCode:'reversal',
  sourceType:'XYZ',
  projection: "EPSG:4326",
  isRLayerPanel: true,
  title:'反转色',
  crossOrigin: 'anonymous',
  themeStyle:'reversal',
  opacity: 1,
  url:'https://t{0-7}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={z}&TILECOL={x}&TILEROW={y}&tk=46a08ed576eb9ad93d6a465a55544a5b',
  visible: false
}

2、核心转换代码实现

export function getStyleSource(layer, type) {
    let reverseFunc = undefined
    if (type == 'gray') {
        reverseFunc = function (pixelsTemp) {
            //灰色
            for (var i = 0; i < pixelsTemp.length; i += 4) {
                var r = pixelsTemp[i];
                var g = pixelsTemp[i + 1];
                var b = pixelsTemp[i + 2];
                //运用图像学公式,设置灰度值
                var grey = 0;
                //将rgb的值替换为灰度值
                pixelsTemp[i] = grey;
                pixelsTemp[i + 1] = grey;
                pixelsTemp[i + 2] = grey;
            }
        };
    } else if (type == 'blue') {
        reverseFunc = function (pixelsTemp) {
            //蓝色
            for (var i = 0; i < pixelsTemp.length; i += 4) {
                var r = pixelsTemp[i];
                var g = pixelsTemp[i + 1];
                var b = pixelsTemp[i + 2];
                //运用图像学公式,设置灰度值
                var grey = 0;
                //将rgb的值替换为灰度值
                pixelsTemp[i] = grey;
                pixelsTemp[i + 1] = grey;
                pixelsTemp[i + 2] = grey;

                pixelsTemp[i] = 0;
                pixelsTemp[i + 1] = 2;
                pixelsTemp[i + 2] = 30;
            }
        };
    } else if (type == 'black') {
        reverseFunc = function (pixelsTemp) {
            //灰色
            for (var i = 0; i < pixelsTemp.length; i += 4) {
                var r = pixelsTemp[i];
                var g = pixelsTemp[i + 1];
                var b = pixelsTemp[i + 2];
                //运用图像学公式,设置灰度值
                var grey = ;
                //将rgb的值替换为灰度值
                pixelsTemp[i] = grey;
                pixelsTemp[i + 1] = grey;
                pixelsTemp[i + 2] = grey;

                //黑色,依赖上边的灰色
                pixelsTemp[i] = 0;
                pixelsTemp[i + 1] = 0;
                pixelsTemp[i + 2] = 0;
            }
        };
    } else if (type == 'reversal') {
        reverseFunc = function (pixelsTemp) {
            //反转色
            for (var i = 0; i < pixelsTemp.length; i += 4) {
                pixelsTemp[i] = 0;
                pixelsTemp[i + 1] = 0;
                pixelsTemp[i + 2] = 0;
            }
        };
    }

    if (reverseFunc) {
        const raster = new RasterSource({
            sources: [
                layer,
            ],
            operationType: 'image',
            operation: function (pixels, data) {
                reverseFunc(pixels[0].data)
                return pixels[0];
            },
            threads: 10,
            lib: {
                reverseFunc: reverseFunc,
            }

        });
        // raster.refresh()
        return raster;
    } else {
        return layer;
    }
}

3、前端代码实现

<html lang="en">
<head>
    <meta charSet="utf-8">
    <!--注意:openlayers 原版的比较慢,这里引起自己服务器版-->
    <link rel="stylesheet" href="http://openlayers.vip/examples/css/ol.css" type="text/css">
    <style>
        /* 注意:这里必须给高度,否则地图初始化之后不显示;一般是计算得到高度,然后才初始化地图 */
        .map {
            height: 1080px;
            width: 100%;
            float: left;
        }
    </style>
    <!--注意:openlayers 原版的比较慢,这里引起自己服务器版-->
    <script src="http://openlayers.vip/examples/resources/ol.js"></script>
    <script src="./tileSourceColor.js"></script>
    <script src="./tiandituLayers.js"></script>
    <title>OpenLayers example</title>
</head>
<body>
<!--<h2>OpenLayers style</h2>-->
<!--地图容器,需要指定 id -->
<div id="map" class="map"></div>

<script type="text/javascript">
    var map = new ol.Map({
        // 地图容器
        target: 'map',
        // 地图图层,比如底图、矢量图等
        layers: [
            getVEC_CLayer(),
            getCVA_CLayer(),
        ],
        // 地图视野
        view: new ol.View({
            projection: "EPSG:4326",
            // 定位
            center: [115.67724700667199, 37.73879478106912],
            // 缩放
            zoom: 6,
            maxZoom: 18,
            minZoom: 1,
        })
    });

    var defaultStyle = new ol.style.Style({
        //边框样式
        stroke: new ol.style.Stroke({
            color: 'white',
            width: 2,
        }),
        //填充样式
        fill: new ol.style.Fill({
            color: 'rgba(255, 255, 255, 0.7)',
        }),
        image: new ol.style.Circle({
            radius: 5,
            fill: new ol.style.Fill({
                color: 'white',
            })
        })
    })

</script>
</body>
</html>

三、技术实现效果

1、午夜蓝风格

2、中国黑风格

3、中国灰风格

4、翻转色风格

  如果对您有所帮助,请点赞打赏支持!

技术合作交流qq:2401315930

最后分享一下地图下载器设计及下载地址:

链接:https://pan.baidu.com/s/1RZX7JpTpxES-G7GiaVUxOw 
提取码:61cn

地图下载器代码结构设计及功能实现_地图下载管理器解析-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

个人健康数据管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;知识科普管理&#xff0c;健康信息共享管理&#xff0c;健康计划管理&#xff0c;健康数据管理&#xff0c;数据分析管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系…

【Qt】多线程示例代码(QThread)

从QThread继承方式 1. qdicethread.h #ifndef QDICETHREAD_H #define QDICETHREAD_H#include <QObject> #include <QThread>class QDiceThread : public QThread {Q_OBJECT public:explicit QDiceThread(QThread *parent nullptr);void diceBegin();void dicePau…

公交信息在线查询小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;线路信息管理&#xff0c;站点分类管理&#xff0c;站点信息管理&#xff0c;周边分类管理周边信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0…

数说故事 | 大数据洞察宠物消费市场数据

“班味”越来越重的年轻人正靠养宠物来“拯救”自己的生活。结束了一天的忙碌&#xff0c;推开家门&#xff0c;撸个猫、遛个狗&#xff0c;哪怕云吸一下&#xff0c;命就续上了&#xff0c;感觉瞬间焕发新生&#xff0c;能量值满满。 宠物对于铲屎官的意义&#xff0c;不止于…

软件统一过程(RUP)

软件统一过程(Rational Unifed Process&#xff0c;RUP)是 Rational 软件公司创造的软件工程方法。RUP 描述了如何有效地利用商业的、可靠的方法开发和部署软件&#xff0c;是一种重量级过程。 1. 统一过程概述 统一过程 统一过程&#xff08;RUP/UP&#xff0c;Rational Unif…

openEuler Repo

openEuler repo 前言 一键创建在线repo&#xff0c;脚本自动识辨系统无须更改&#xff0c;默认脚本走的是华为更改变量即可$repo_url即可。 openEuler Repo 一键更改脚本 兼容一键替换openEuler repo 20 21 22 23 24自动识辨清华大学 openEuler repo华为云源 openEuler repo…

2024.7.31(基于域名和IP地址的主机,上线商城)

将原有的nginx.conf文件备份 [roottomcat ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak [roottomcat ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf > /usr/local/nginx/conf/nginx.conf 一、基于域名的虚拟主机 创建…

C语言程序设计18

程序设计18 问题18_1代码18_1结果18_1 问题18_2代码18_2结果18_2 问题18_3代码18_3结果18_3 问题18_1 函数 f u n fun fun 的功能是&#xff1a;有 N N N\times N NN 的矩阵&#xff0c;根据给定的 m ( m < N ) m(m<N) m(m<N) 值&#xff0c;将每行元素中的值均右…

Spring Boot 使用 Spring AI 构建知识库服务

目录 前言 环境准备 JDK17 Spring Boot 3.2.4 Ollama PostgreSQL16 下载向量化模型 pom yml EmbeddingController 向量化示例 向量化文本 向量化检索 ChatController 知识库示例 前言 做 AI 大模型技术调研时&#xff0c;参考的开源项目 Maxkb&#xff0c;它基于…

数据结构7月31日作业

问题&#xff1a; 答案&#xff1a;

C语言 ——深入理解指针(1)

目录 1. 内存和地址2. 指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.3 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void* 指针 4. const修饰指针4.1 const修饰变量4.2 co…

Flink 实时数仓(二)【DIM 层搭建】

1、DIM 层搭建 1.1、设计要点 DIM层设计要点&#xff1a; DIM层存的是维度表&#xff08;环境信息&#xff0c;比如人、场、货等&#xff09;DIM层的数据存储在 HBase 表中DIM层表名的命名规范为dim_表名 DIM 层表是用于维度关联的&#xff0c;要通过主键&#xff08;维度外…

Chapter 22 数据可视化——折线图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、Pyecharts介绍二、安装Pyecharts三、全局配置项四、绘制折线图 前言 在大数据时代&#xff0c;数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 …

微信小程序-获取手机号:HttpClientErrorException: 412 Precondition Failed: [no body]

问题&#xff1a; 412 异常就是你的请求参数获取请求头与服务器的不符&#xff0c;缺少请求体&#xff01; 我的问题&#xff1a; 我这里获取微信手机号的时候突然给我报错142&#xff0c;但是代码用的是原来的代码&#xff0c;换了一个框架就噶了&#xff01; 排查问题&am…

esp-07s 模块的WIFI 联网和MQTT AT指令测试,固件下载更新方法

安信可官网: https://docs.ai-thinker.com/start 一、wifi 联网测试指令 版本&#xff1a;AT version: 1.2.0.0 //1.重启模块 ATRST//2.设置当前 Wi-Fi 模式&#xff0c;不保存到 flash ATCWMODE_CUR1//3.设置 DHCP&#xff0c;不保存到 flash ATCWDHCP_CUR1,1//4.上电是否…

AIGC大模型产品经理高频面试大揭秘‼️

近期有十几个学生在面试大模型产品经理&#xff08;薪资还可以&#xff0c;详情见下图&#xff09;&#xff0c;根据他们面试&#xff08;包括1-4面&#xff09;中出现高频大于3次的问题汇总如下&#xff0c;一共32道题目&#xff08;有答案&#xff09;。 29.讲讲T5和Bart的区…

使用PhotoMaker V2产生明星香水广告照片

PhotoMaker V2 是一个令人兴奋的工具&#xff0c;可以帮助您快速生成逼真的个性化人物照片。您只需提供一张或几张面部照片以及一个文本提示&#xff0c;即可在几秒钟内获得定制的照片或绘画&#xff0c;无需进行额外的训练。这个模型还可以与其他基于 SDXL 的基础模型或其他 L…

干货 | 2024中国联通算力网络安全白皮书(免费下载)

本白皮书以国家整体安全观为指导&#xff0c;充分发挥网络安全现代产业链链长的主体支撑和融通带动作用&#xff0c;提出算力网络“新质安全、共链可信”的安全愿景和“构建开放融合内生免疫弹性健壮网安智治的一体化安全”的安全目标。从运营商开展网络建设和应用部署的角度出…

安全编程:Rust示例强密码策略

一、什么是强密码策略&#xff1f; 强密码策略是一套旨在提高账户安全性的规则和建议。以下是一些创建和使用强密码的关键策略&#xff1a; 长度&#xff1a;密码应至少包含8个字符&#xff0c;更长的密码通常更安全。 复杂性&#xff1a;使用大小写字母、数字和特殊字符的组合…

OAuth2的四种认证方式

文章目录 客户端认证grant_typeclient_credential授权码认证access_token密码认证grant_typepassword刷新token认证其他认证 OAuth2是目前流行的认证协议&#xff0c;主要包含四种认证方式&#xff1a;客户端认证、密码认证、授权码认证、刷新令牌认证。 客户端认证grant_typec…