最近在做海洋标量要素数据分级渲染的时候遇到了一个小问题,在确定插值点的过程中我只想对海洋上的点进行插值,问题来了如何对一个给定经纬度的点判断其属于陆地还是海洋呢?废话少说让我们来解决这个问题
鄙人不才想到了两种思路,第一种思路是一种思想上的简化(仅供参考,欢迎指正)
将全球的矢量图转栅格然后在Arcmap进行二值化处理,这样给定经纬度就可以根据其在那个栅格来判断其属于陆地还是海洋。误差大,算法复杂度高不推荐根据图形的包含关系来判断。推荐方法?你可能要问为啥要用JS实现,好的让我回答你因为我稀罕JS.哈哈,其实是因为我目前做的是一个Web应用不想频繁的进行前后端交互,想要自己大干一场突然在npm上找到了一个包实现了这个功能,包托管地址is-sea,本着不重造轮子原则我们就把这个包用起来吧。
首先把这个包down下来
git clone https://github.com/simonepri/is-sea.git安装依赖
npm installnode项目如何直接引入到前端代码使用呢,大家都是JS有话好好说嘛,此时webpack和browserify就闪亮登场了,本文使用browserify来进行打包。两篇参考博客献上
通过 Browserify 在浏览器中使用 NodeJS 模块 Browserify 跑在浏览器上的Node程序
认真看一看我们开始打包,找到刚刚我们down下来项目的index.js在里面把你需要的函数暴露给全局变量
window.isSea=isSea;文件执行打包命令
browserify index.js > bundle.js此时文件夹下生成了一个bundle.js文件将其引入你的项目中大功告成,我们来检验一下
console.log(isSea(120,30));//(120,30)中国某一点 =>false console.log(isSea(40,-40));//大西洋上某一点 =>true就这么简单!!!!