大家都知道ArcGIS现在整个产品体系特别庞大,以我来看,个人是不能将所有的产品学到精通的,毕竟整个产品已经年近五旬,积累沉淀的东西非一人所能穷尽的。
现在就说一下ArcGIS Enterprise,俗称”ArcGIS 全家桶“套餐,为什么这么叫呢,因为之前这个系统有多个组件。ArcGIS Enterprise 在是在10.5版本以后才叫这个名字的,算是一个统称,包括了Portal Server Datastore Webadaptor,所以需要一个个组件安装,并且有一定的部署顺序,如果不太熟悉这个流程,好不容易在漫长的安装过程之后,出现令人崩溃的不能用,排查问题的时候又很困难,所以,目前这套系统再生产环境中需要Esri官方技术人员现场部署,以保证系统的安全。
无人机(UAV)影像处理最佳实践
什么是texture函数
在着色器语言中,如GLSL(OpenGL Shading Language),texture2D
是用于在纹理上进行采样的函数。它的参数通常包括两个:
1 | vec4 texture2D(sampler2D sampler, vec2 textureCoordinates); |
其中:
sampler2D sampler
:表示纹理采样器,它是一个指向纹理对象的引用。这个参数告诉着色器在哪个纹理上进行采样。vec2 textureCoordinates
:表示纹理坐标,用于指定在纹理上的位置。纹理坐标通常是二维的,范围在 [0.0, 1.0] 之间。通常(0, 0)
表示纹理的左下角,(1, 1)
表示右上角。
texture2D
函数返回一个 vec4
类型的颜色值,其中包含了在指定纹理坐标位置处采样得到的颜色信息。这个颜色值通常包括红色(R)、绿色(G)、蓝色(B)和 alpha 通道(A)的分量。
例如,在一个简单的片元着色器中,你可能会使用 texture2D
函数来获取纹理上某个位置的颜色:
1 | uniform sampler2D myTexture; // 纹理采样器 |
在这个例子中,myTexture
是一个纹理采样器,vTextureCoord
是从顶点着色器传递过来的纹理坐标。texture2D(myTexture, vTextureCoord)
用于在这个纹理坐标处采样纹理,返回颜色值,然后可以在着色器中进行后续处理。
Cesium写GLSL的texture和texture2D函数【踩坑】
这是关于Cesium版本的问题!
Cesium1.102.0以上版本不再支持WebGL1渲染上下文,改为WebGL2
所以要特别注意两个版本的语法问题
texture写法在Cesium1.102.0以下版本报错,如下图:
所以在写Cesium关于GLSL时,注意版本对应
Cesium版本 | 函数 |
---|---|
>=1.102.0 | texture() |
<1.102.0 | texture2D() |
完美geoserver跨域解决方式(2024版)
因为tomcat
容器本身或者geoserver
的安全策略,在tomcat
中部署geoserver
,导致在其他应用使用geoserver
地图服务会出现跨域现象。
通常会通过nginx
的反向代理解决这个问题。
但是安装nginx
反过来又会让流程变得繁琐,将大象装到冰箱里就不止三部了。
我们知道,GeoServer
的项目是一个完整的Java
(J2EE
)系统。
所以,基于geoserver
本身配置可以来解决这个问题。
但是百度搜索的结果不是过时,就是毫无责任的、误导人的遍地复制粘贴,也说明现在搜索引擎的尴尬局面:blog
、论坛
、贴吧
的时代一去不复返,robot
协议更加苛刻,搜索爬虫处于严重饥饿状态。 所以我们拿到的结果显得匮乏,难以命中问题。
好在chatgpt解决了一些问题,但是使用成本和难以预料的胡说八道,又让我们不得不审视其专业性。
废话不再多说
简要说下就是在tomcat
中部署完geoserver
,能正常访问后,通过修改geoserver
的web.xml
文件,将两个jar包添加到geoserver
的lib
目录,就能完美解决跨域问题,重点是找到不同geoserver
所对应的jar
版本
航班数据分享
近期抓取了一些航班数据,分享一下。
1 | 数据范围:全国(境内,不包括港澳台) |
关注右侧公众号zyouzz回复”航班”获取下载,
有偿提供近期或者其他日期航班数据(全国、世界均可)
如有需要,请于公众号zyouzz留言
WebGL若干原理摘抄
Shader
shader,即着色器,分为顶点着色器(Vertex Shader)
、片元着色器(Fragment Shader)
、几何着色器(Geometry shader)
、计算着色器(Compute shader)
、细分曲面着色器(Tessellation or hull shader)
,其中可编程的是顶点着色器和片元着色器。至于它们的定义网上可以找到很多,但对于小白来讲看完还是一脸懵逼,我们需要一种通俗易懂的解释,这才符合深入浅出的精髓。
在知乎上找到一段解释,感觉还不错:
1 | 当我们在屏幕上绘制或显示一些物体时, |
简单来说渲染流程如下:
顶点数据(Vertices) > 顶点着色器(Vertex Shader) > 图元装配(Assembly) > 几何着色器(Geometry Shader) > 光栅化(Rasterization) > 片元着色器(Fragment Shader) > 逐片元处理(Per-Fragment Operations) > 帧缓冲(FrameBuffer)
最后经过双缓冲的交换(SwapBuffer),渲染内容就显示到了屏幕上。从流程中我们可以看到,顶点着色器之后是图元装配, 图元装配通俗讲就是把图形放置到坐标系中。在片元着色器之前是 光栅化,光栅化是将图形投影到屏幕上,把图形栅格化成一个个的像素点,一个像素点也就是一个片元。在片元着色器之后是逐片元处理, 逐片元处理即填充颜色。再说白一点,顶点着色器负责坐标位置,片元着色器负责填充颜色。好吧,这个说法不一定很严谨,但一定足够浅显,如果我说的不对也欢迎拍砖。
域名包括二级路径,配置VUE中vite
通常情况下我们将vue
打包后,直接放置nginx
或者tomcat
等容器里,配置下相关路径文件就可以访问了。
但是当我们使用域名的二级路径访问时,如https://abc.com/cesium/
,会报404错误,这是因为一些静态文件路径为域名+文件形式,导致找不到文件,例如index.html
中的文件为/assets/index-9a873818.js,导致直接拼接了域名。
接下来需要在工程中做相关配置
1、增加开发环境文件.env.development
,添加以下内容
1 | #开发环境 |
2、增加生产环境文件.env.production
,添加以下内容
1 | 生产环境 |
3、修改package.json
中的dev
和build
命令为:
1 | "dev": "vite serve --mode development", |
4、安装dotenv
模块,
1 | yarn add dotenv |
5、在vite.config.js
中增加
1 | import dotenv from 'dotenv'; |
另外附nginx一般配置,
1 | location cesium/ { |
注意文件夹名要和域名二级路径一致,不然需要在index.html前指定文件夹名称,如下
1 | location cesium/ { |
Cesium拾取坐标三种方式(摘抄)
首先基于事件触发捕捉位置信息,一般是Cesium.ScreenSpaceEventType.MOUSE_MOVE
,也可以是Cesium.ScreenSpaceEventType.LEFT_CLICK
或者Cesium.ScreenSpaceEventType.RIGHT_CLICK
1 | this.mouseHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); |
根据场景加载数据和需求,大部分情况下,我们拾取的是模型表面位置,所以使用方法一。
1 | // 方式一: 从场景的深度缓冲区中拾取相应的位置,可以采集entity,primitive,3dtile |
postman设置collection全局token
平时在postman调试接口多,如果过了一段时间后,token会失效,每个请求需要更换token,挺麻烦的,我们可以根据在postman配置collection下的全局token;
具体如下
1、打开Postman并创建一个新的Collection。
2、在Collection的”Authorization”选项卡中选择适当的授权方式(例如Bearer Token或OAuth 2.0)。
3、在”Token”字段中,使用双大括号({{}})将Token包裹起来,形成一个环境变量。例如:{{token}}。
4、点击右上角的“眼睛”按钮,以便在请求中查看环境变量的值。
5、现在,您需要在Postman的环境中设置Token的值。在Postman左上角的”Manage Environments”(管理环境)按钮旁边,点击下拉菜单按钮,并选择”Add”(添加)。
6、输入环境名称,例如”Token Environment”,然后点击”Add”(添加)。
7、在环境变量列表中,添加一个新的变量,键为”token”,值为您的Token值。
8、点击”Save”(保存)以保存环境变量。
9、注意检查请求中Authorization是否为inherit auth from parent