- 博客(13)
- 收藏
- 关注
原创 判断直线是否共线
共线则单位向量相等或为其复数 如方向向量[2,2,0]与[5,5,0],[2,2,0]与[-1,-1,0]均为共线function arrayEqual(arr1, arr2) { // true 表示正向共线 ,false表示反向共线 let flag = true; let flag2 = true; if (arr1.length !== arr2.length) return false; for (let i = 0; i < arr1.length; i++) {
2022-05-17 14:51:23
1666
原创 计算三维空间点到线段的最短距离
线段不同于直线是无限延申的,所以点到线段的距离需要考虑线段的两端(适用于平行线段最短距离计算,即取两端点到另一线段的距离进行比较即可)如图有以下三种情况,绿色箭头所表示的线段即为最短距离所处的线段以上情况均有向量AD=(|AP|*|AB|*cos<AP,AB>/ |AB|)*(AB/|AB|)即向量AD=r*AB设定dot为向量点积函数,mold为求向量模函数,cross为向量叉乘设r=dot(AP,AB)/|AB|^2由上图可知 当r<0时 最短距离为AP.
2022-05-17 14:47:29
2307
原创 三维空间异面直线最短距离计算
先考虑直线间的关系,与二维直线不同的是还需要考虑异面关系,共面则又分为相交(包括垂直)、平行(共线)等关系,主要困难的在于异面直线的距离计算。若是直接使用坐标值计算不仅复杂还容易出错,这里我们考虑空间向量来实现异面直线间的距离计算。一、判断两直线的大类关系即异面还是共面。找出两直线的法向量PUB(PUB等于两直线向量的叉乘),再分别取两直线各一点生成向量L,判断PUB与L之间夹角是否为90°即可(点积中的cos=0)设定叉乘和点积的计算函数如下// 向量叉乘function cross(
2022-05-17 13:47:46
2787
原创 管线上下游关系获取
在不借助GIS专业软件的情况下,根据管线属性中的起止点编号/名称/经纬度等获取完整的上下游管线编码/经纬度关系。假设存在数据list,设定结果test初始值为空数组list=[ { .... "startLongitude": 111, "startLatitude": 38, "endLongitude": 111.3, "endLatitude": 39, "startCode": "",
2022-04-19 16:45:17
357
原创 计算瓦片对应的经纬度
function calculate(z, x, y) => { //层级 constlevel=Number(z); //瓦片坐标 consttileX=Number(x); consttileY=Number(y); // 像素坐标 const pixelX = { pixel_left_X: 0, pixel_left_Y: 255 // 左下角坐标,像素坐标系为东向,南向 }; const pixelY = { ...
2022-04-11 16:45:05
1225
原创 kml转geojson
const readline = require('readline');const fs = require('fs');const Path = require('path');const DIR = 'C:/Users/Admin/Desktop/';const dir = fs.readdirSync(DIR);dir.forEach(k => { if (k.indexOf('.kml') !== -1) { const path = DIR + k; con.
2022-04-11 16:37:54
1918
原创 mapbox加载iserver切片
加载iserver矢量切片/tileFeature/vectorstyles.json?type=MapBox_GL&styleonly=true源码参考:https://iclient.supermap.io/examples/mapboxgl/editor.html#mvtVectorTile_precacheconst map=new mapboxgl.Map({...crs: new mapboxgl.CRS('EPSG:4326', [-180, -90, 180, 90
2022-04-11 15:34:40
933
原创 sequelize中的left join与inner join
include另一张表时的默认情况,即required:false;当include中包含where语句限定时,会将其自动变为inner join,此时即为required:true;此时即使设定为false也无效。若需left out join且联表查询时,可使用顶层where语句,即$,如下所示:...
2022-04-11 15:23:52
1334
原创 ArcGIS生成三维线的中间点数据
ArcGIS生成三维线的中间点数据1.导出表,选择所需的字段2.添加字段,计算中点的XYZ3.在ArcMap中添加该数据后右键 -“显示XY数据”选择创建的字段和正确的坐标系,此时变成了点事件,还需导出为shp4.点事件导出数据...
2021-04-14 16:17:35
737
原创 白膜在ArcGIS中的生成与发布
1.首先查看数据属性包括坐标系、属性表、数据类型是否符合要求等,以二维shp数据为例如上图所示,查看该数据的属性表得知存在两个字段对于生成建筑白膜有用,Height和NewHeight,这两个字段均为高度字段,不同的地方在于,一个是建筑的高程信息,一个是建筑的高度信息上图为数据属性,我们可以得知其数据类型为shp,坐标无Z值,也就是没有高程信息,即为普通的二维平面数据,生成白膜的第一步就是将其转为三维数据,空间参考信息就是常说的坐标系,这里使用了3857坐标系2.数据转为带Z值的3D要素前
2021-04-12 16:45:38
3544
原创 ArcGIS上下游追溯及网络分析GP服务
ArcGIS上下游追溯及网络分析GP服务1.创建几何网络2.新建模型构建器3.整个模型构建器4 运行工具及共享最近的项目使用工具回顾留存。1.创建几何网络1.1新建gdb并在该数据库上新建要素数据集1.2将数据拖至要素数据集中,并创建几何网络1.3设置几何网络流向2.新建模型构建器2.1 加载"追踪几何网络“工具2.2 将对应的数据及几何网络传入该工具中,其中追踪任务类型设置为变量,以供GP服务可根据实际需要调用2.3工具的分析结果集合可根据需要导出对应的数据,导出数据可利用模型构建器的
2021-03-20 20:21:42
1336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人