方法:我目前正在使用 turf.js 进行地理处理,作为更广泛的地图项目的一部分;我的工作流程如下所示:
turf.merge将水平铺成单个多边形turf.intersect每个区域多边形turf.erase与地形多边形相交,它的水域面积问题:当我的过程在第 3 步中遍历每个水块时,它碰到了一个特定的块并开始抛出此错误:
/Users/wboykinm/github/tribes/processing/water/node_modules/turf/node_modules/turf-intersect/index.js:45
if(poly2.type === 'Feature') geom2 = poly2.geometry;
^
TypeError: Cannot read property 'type' of null
at Object.module.exports [as intersect] (/Users/wboykinm/github/tribes/processing/water/node_modules/turf/node_modules/turf-intersect/index.js:45:11)
at Object.<anonymous> (/Users/wboykinm/github/tribes/processing/water/piranha.js:26:14)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
Run Code Online (Sandbox Code Playgroud)
. . …
我正在尝试ST_MakeValid()在一系列大多数同心等距的多边形上使用 PostGIS函数。. .
. . . 它们用明确的几何类型和 SRID 定义(虽然它们可能不是完全有效,但仍然足以在 QGIS 中呈现,如上所示):
trade=# \d tmp1
Table "public.tmp1"
Column | Type | Collation | Nullable | Default
-----------+-----------------------------+-----------+----------+---------
the_geom | geometry(MultiPolygon,4326) | | |
Run Code Online (Sandbox Code Playgroud)
不幸的是,ST_MakeValid()当我使用它来创建新表时,该函数正在剥离 SRID 和几何类型:
trade=# CREATE TABLE tmp2 AS (SELECT ST_MakeValid(the_geom) AS the_geom_valid FROM tmp1);
SELECT 25
trade=# \d tmp2
Table "public.tmp2"
Column | Type | Collation | Nullable | Default
----------------+----------+-----------+----------+---------
the_geom_valid | geometry | | |
Run Code Online (Sandbox Code Playgroud)
. . . 并且ST_SetSRID() …
我认为这意味着我缺少有关javascript中嵌套函数工作的一些基本知识,但是我无法使用click函数从传单地图中添加或删除图层。具体来说,我有一个传单地图,其中定义了许多矢量层。这些图层之一将在页面加载时添加到地图,然后应该在图层选择器中的click事件上加载后续图层。
这是处理单击的函数,然后更新侧边栏图例,更新层选择器中的类,并应更新可见层:
// ADD THE LAYER CONTROL FUNCTION
$('.layer').click(function() {
var oldLayer = $('.active').attr('id');
var newLayer = $(this).attr('id');
console.log(oldLayer + ' --> ' + newLayer);
$('#infobits').html('<h2>' + this.text + '</h2><hr>' + legendFormatter(
this.id));
map.removeLayer(oldLayer);
$('.layer').removeClass('active');
$(this).addClass('active');
map.addLayer(newLayer);
});
Run Code Online (Sandbox Code Playgroud)
每当我单击一个新层时Uncaught TypeError: undefined is not a function,无论将函数放在哪里(甚至在.getJSON()调用中都放了一点)都可以。令人困惑的是,我在浏览器中转到JS控制台,并逐字键入函数在上面脚本(map.removeLayer(Percent_TC_bg))的第49行上生成的内容,该地图删除了相关图层。
我该怎么做才能使地图正确地添加和删除图层?
javascript ×2
function ×1
geojson ×1
jquery ×1
leaflet ×1
node.js ×1
postgis ×1
postgresql ×1
turfjs ×1