小编Bil*_*ris的帖子

turf.js 可以用来查找和修复坏的 geojson 几何体吗?

方法:我目前正在使用 turf.js 进行地理处理,作为更广泛的地图项目的一部分;我的工作流程如下所示:

  1. 为整个县提取人口普查区的 geojson
  2. 从县域的 OSM 中提取水多边形的 geojson 切片
  3. 递归地将大片和每个水瓦拉入节点脚本
  4. 在脚本中,turf.merge将水平铺成单个多边形
  5. 在脚本中,针对水多边形递归turf.intersect每个区域多边形
  6. 在脚本中,如果turf.erase与地形多边形相交,它的水域面积
  7. 将水擦过的大片转储到文件中

问题:当我的过程在第 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)

. . …

javascript geojson node.js turfjs

5
推荐指数
1
解决办法
1955
查看次数

为什么 ST_MakeValid() 从已定义的几何图形中剥离 SRID?

我正在尝试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() …

postgresql postgis

5
推荐指数
1
解决办法
153
查看次数

Leaflet .addLayer()函数失败,在控制台上工作

我认为这意味着我缺少有关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 jquery function leaflet

3
推荐指数
1
解决办法
7013
查看次数