Truf.js文档整理适用于浏览器和Node.js的高级地理空间分析库。turf默认使用的是标准的geojson数据,坐

适用于浏览器和Node.js的高级地理空间分析库

坐标默认是经纬度【经度,纬度】//先经度,后纬度

获取一个区域的面积(单位是㎡)

用法:

参数:

返回:

(number):面积(单位是㎡)

例子:

varpolygon=turf.polygon([[[125,-15],[113,-22],[154,-27],[144,-15],[125,-15],],]);vararea=turf.area(polygon);//3332484969239.2676bbox获取边界框计算任何GeoJSON对象(包括FeatureCollection)的边界框

[minX,minY,maxX,maxY](Number[]):边界值

varline=turf.lineString([[-74,40],[-78,42],[-82,35],]);varbbox=turf.bbox(line);//[-82,35,-74,42]varbboxPolygon=turf.bboxPolygon(bbox);//如果line里面自己包含bboxvarline=turf.lineString([[-74,40],[-78,42],[-82,35],]);line.bbox=[1,1,1,1]varbbox=turf.bbox(line);//[1,1,1,1]varbboxPolygon=turf.bboxPolygon(bbox);//如果recompute为truevarline=turf.lineString([[-74,40],[-78,42],[-82,35],]);line.bbox=[1,1,1,1]varbbox=turf.bbox(line,{recompute:true});//[-82,35,-74,42]varbboxPolygon=turf.bboxPolygon(bbox);bboxPolygon把边界值转为等价的polygon对象把bbox的值转为一个等价的polygon地理数据对象

varbbox=[0,0,10,10];varpoly=turf.bboxPolygon(bbox);envelope获取元素边界框接受任意数量的要素,并返回一个包围所有顶点的矩形多边形。等价于bbox+bboxPolygon

varfeatures=turf.featureCollection([turf.point([-75.343,39.984],{name:"LocationA"}),turf.point([-75.833,39.284],{name:"LocationB"}),turf.point([-75.534,39.123],{name:"LocationC"}),]);varenveloped=turf.envelope(features);square计算正方形边界框接受一个边界框并计算能容纳输入的最小正方形边界框.

(BBox):正方形边界框

varbbox=[-20,-20,-15,0];varsquared=turf.square(bbox);计算中心center/centerOfMass/centerMean/centerMedian@turf/center

@turf/center-of-mass

@turf/center-mean

@turf/center-median

接受一个要素或要素集合,并返回所有要素的绝对中心点。

varpolygon=turf.polygon([[[-81,41],[-88,36],[-84,31],[-80,33],[-77,39],[-81,41],],]);varcenter=turf.centerOfMass(polygon);centroid计算质心计算质心作为对象内所有顶点的平均值。

varpolygon=turf.polygon([[[-81,41],[-88,36],[-84,31],[-80,33],[-77,39],[-81,41],],]);varcentroid=turf.centroid(polygon);pointsWithinPolygon查找在落在多边形内的点查找落在(多)多边形内的点或多点坐标位置。

用法:

返回:

例子:

varpoints=turf.points([[-46.6318,-23.5523],[-46.6246,-23.5325],[-46.6062,-23.5513],[-46.663,-23.554],[-46.643,-23.557],]);varsearchWithin=turf.polygon([[[-46.653,-23.543],[-46.634,-23.5346],[-46.613,-23.543],[-46.614,-23.559],[-46.631,-23.567],[-46.653,-23.56],[-46.653,-23.543],],]);varptsWithin=turf.pointsWithinPolygon(points,searchWithin);LineStringalong获取指定距离的坐标返回沿着管线指定距离的点的坐标

varline=turf.lineString([[-83,30],[-84,36],[-78,41],]);varoptions={units:"miles"};varalong=turf.along(line,200,options);//Point([-83.4608648621918,32.8678095806294])length计算线长度用指定单位计算线的长度

(Number):线的长度

varline=turf.lineString([[115,-32],[131,-22],[143,-25],[150,-34],]);varlength=turf.length(line,{units:"miles"});//2738.9663893575207pointToLineDistance计算点到线的最短距离接受一个点和一条线,并返回点到线的最短距离。

(Number):点到线的最短距离

varpt=turf.point([0,0]);varline=turf.lineString([[1,1],[-1,1],]);vardistance=turf.pointToLineDistance(pt,line,{units:"miles"});//=69.11854715938406nearestPointOnLine获取点到线的最近点提供一个Point和一个LineString,返回LineString上离Point最近的点

(Feature)

返回点集合中距离直线最近点。返回的点有一个dist属性,表示它到直线的距离

varpt1=turf.point([0,0]);varpt2=turf.point([0.5,0.5]);varpoints=turf.featureCollection([pt1,pt2]);varline=turf.lineString([[1,1],[-1,1],]);varnearest=turf.nearestPointToLine(points,line);Pointbearing地理方位角获取一条直线的角度,垂直向上0,垂直向下为180,水平向左接近90,水平向右接近-90。范围-180~180接受两个点,并找到它们之间的地理方位角,即从北方线(0度)测量的角度。计算方法:bearing函数计算的是两个地理点之间的大圆航线方位角(Great-circlebearing)。这是从起点到终点沿着球面最短路径(大圆路径)的方向。适用场景:适用于大圆航线的情况,特别是当你关心两个点之间的最短路径方向时,使用bearing。常用于航海、航空以及需要精确计算地球表面两点之间的方向的场景。特点:计算出的方位角是在球面上朝向终点的最初方向。由于地球的球形,路径和方位角会随着行进而改变。用法:

(Number):线的角度

varpoint1=turf.point([-75.343,39.984]);varpoint2=turf.point([-75.534,39.123]);varbearing=turf.bearing(point1,point2);//-170.2330491349224rhumbBearing投影方位角取两个点,并返回他们的方位角

(Number):线的角度,范围-180~180顺时针测量

varpoint1=turf.point([-75.343,39.984],{"marker-color":"#F00"});varpoint2=turf.point([-75.534,39.123],{"marker-color":"#00F"});varbearing=turf.rhumbBearing(point1,point2);//-170.29417535572546destination根据原点、地理方位角、距离计算目标点接受一个点,并根据给定的距离(以度、弧度、英里或公里表示)和方位角(以度表示),计算目的地点的位置。这使用Haversine公式来考虑全球曲率。

varpoint=turf.point([-75.343,39.984]);vardistance=50;varbearing=90;varoptions={units:"miles"};vardestination=turf.destination(point,distance,bearing,options);rhumbDestination根据原点、投影方位角、距离计算目标点接受一个点,并根据给定的距离(以度、弧度、英里或公里表示)和方位角(以度表示),计算目的地点的位置

计算两点之间的大地球形最短距离,单位可以是度degrees、弧度radians、英里miles或公里kilometers。这使用Haversine公式来考虑全球曲率。

(Number):两点之间的距离

varfrom=turf.point([-75.343,39.984]);varto=turf.point([-75.534,39.123]);varoptions={units:"miles"};vardistance=turf.distance(from,to,options);//60.35329997171415rhumbDistance两点之间的投影最短距离计算两点在固定方向角上的距离,返回的是绝对值。也就是说在地图投影上时一条直线(distance会是一条曲线。但在地球上曲线比直线更短)

(Number):两点之间的距离。的绝对值

varfrom=turf.point([-75.343,39.984]);varto=turf.point([-75.534,39.123]);varoptions={units:"miles"};vardistance=turf.rhumbDistance(from,to,options);//60.35331130430885nearestPoint获取一个点集合中,离某个目标最近的点获取一个点集合中,离某个目标的最近的点

vartargetPoint=turf.point([28.965797,41.010086],{"marker-color":"#0F0",});varpoints=turf.featureCollection([turf.point([28.973865,41.011122]),turf.point([28.948459,41.024204]),turf.point([28.938674,41.013324]),]);varnearest=turf.nearestPoint(targetPoint,points);greatCircle生成两点之间的大圆航线计算大圆航线,表示为LineString或MultiLineString。如果start和end点跨越本初子午线,生成的要素将被分割为一个MultiLineString。

varstart=turf.point([-122,48]);varend=turf.point([-77,39]);vargreatCircle=turf.greatCircle(start,end,{properties:{name:"SeattletoDC"},});midpoint计算两点之间的中点接受两个点,并返回它们之间的中点。中点是通过大地测量计算的,意味着考虑了地球的曲率。

varpoint1=turf.point([144.834823,-37.771257]);varpoint2=turf.point([145.14244,-37.830937]);varmidpoint=turf.midpoint(point1,point2);shortestPath计算两点间的最短路径并自动避开障碍物返回起点到终点的最短路径,并自动避开障碍物(obstacles)

输入三个点,中点-起点为开始线,中点-终点为结束线。计算他们的顺时针夹角

(number)

(GeoJSON)

varpt=turf.point([-71,41]);varconverted=turf.toMercator(pt);toWgs84墨卡托转经纬度转换墨卡托Mercator(EPSG:900913)为经纬度WGS84

varpt=turf.point([-7903683.846322424,5012341.663847514]);varconverted=turf.toWgs84(pt);cleanCoords删除冗余坐标从任何GeoJSON几何体中删除冗余坐标。例如连续两个点是一模一样的坐标就删除一个。如果是线。一条直线上有连续多个点。删除中间的点。

(Geometry|Feature):删除冗余坐标后的几何体

varline=turf.lineString([[0,0],[0,2],[0,5],[0,8],[0,8],[0,10],]);varmultiPoint=turf.multiPoint([[0,0],[0,0],[2,2],]);turf.cleanCoords(line).geometry.coordinates;//=[[0,0],[0,10]]turf.cleanCoords(multiPoint).geometry.coordinates;//=[[0,0],[2,2]]flip翻转坐标接受输入要素,并将它们所有的坐标从[x,y]翻转为[y,x]。

(Geometry):翻转过坐标后的对象

varserbia=turf.point([20.566406,43.421008]);varsaudiArabia=turf.flip(serbia.geometry.coordinates);//[43.421008,20.566406]rewind逆时针重绕逆时针重绕(Multi)LineString或(Multi)Polygon的外环,内环顺时针(使用鞋带公式)。

(Geometry):逆时针重绕后的对象

varpolygon=turf.polygon([[[121,-29],[138,-29],[138,-18],[121,-18],[121,-29],],]);varrewind=turf.rewind(polygon);round四舍五入将数字四舍五入到指定精度。

turf.round(120.4321);//=120turf.round(120.4321,2);//=120.43truncate截取精度接受一个GeoJSON要素或要素集合,并截断几何形状的精度。

(Geometry):几何体

varpoint=turf.point([70.46923055566859,58.11088890802906,1508]);varoptions={precision:3,coordinates:2};vartruncated=turf.truncate(point,options);//=truncated.geometry.coordinates=>[70.469,58.111]bearingToAzimuth(-180~180)度转为(0~360)度把方位角(-180~180)度(北向线顺时针为正,逆时针为负)转为(0~360)度(北向线顺时针计算值)

(number)(0~360)

convertArea面积单位转换面积单位转换,有效单位:kilometers,kilometres,meters,metres,centimetres,millimeters,acres,miles,yards,feet,inches,hectares

convertLength长度单位转换长度单位转换,有效单位:miles,nauticalmiles,inches,yards,meters,metres,kilometers,centimeters,feet

degreesToRadians度转换为弧度将角度(以度为单位)转换为弧度

(number)弧度

radiansToDegrees弧度转为度lengthToDegrees地球面上的距离长度转为度数地球面上的距离长度转为度数,有效单位:miles,nauticalmiles,inches,yards,meters,metres,centimeters,kilometres,feet

(number)度数

lengthToRadians地球面上的距离长度转为弧度radiansToLength弧度转为地球面上的距离长度四.Transformation变换bboxClip根据边界框裁切要素将一个要素和一个边界框(bbox)作为输入,使用lineclip将要素裁剪到边界框。在裁剪多边形时可能会产生退化边缘(即如果多边形都不在范围内,裁剪结果时空)。

varbbox=[0,0,10,10];varpoly=turf.polygon([[[2,2],[8,4],[12,8],[3,7],[2,2],],]);varclipped=turf.bboxClip(poly,bbox);bezierSpline把线转为赛贝尔曲线接受一条线并通过应用Bezier样条算法返回曲线版本。这个Bezier样条的实现是由LeszekRybicki完成的。

(Feature)曲线

通过从第一个多边形中剪切后续多边形来找到多个polygons之间的差异。也就是第一个要素中有。后续要素中没有的部分

接受polygon或multi-polygon几何体,并找到它们的多边形交集。如果它们不相交,则返回空值

(Feature|null)交集部分的要素集合

对一个包含多个polygon特征的FeatureCollection进行融合,可以选择根据可选的属性名称:值进行过滤。请注意,该集合中的multipolygon特征不受支持。

(FeatureCollection)融合后的要素集合

varfeatures=turf.featureCollection([turf.polygon([[[0,0],[0,1],[1,1],[1,0],[0,0],],],{combine:"yes"},),turf.polygon([[[0,-1],[0,0],[1,0],[1,-1],[0,-1],],],{combine:"yes"},),turf.polygon([[[1,-1],[1,0],[2,0],[2,-1],[1,-1],],],{combine:"no"},),]);vardissolved=turf.dissolve(features,{propertyName:"combine"});//内部包含两个FeaturelineOffset线偏移(沿着线的法线方向)接受一条line,并返回一个以指定距离偏移的line。

对一个Polygon或MultiPolygon进行平滑处理。基于Chaikin'salgorithm。警告:可能会创建退化的多边形。

接受一个GeoJSON对象,并返回一个简化版本。在内部使用simplify-js的二维版本,使用Ramer-Douglas-Peucker算法执行简化。

(GeoJSON)简化后的地理数据

将一个Feature进行三角剖分,生成一个由三角形组成的FeatureCollection,使用earcut进行操作。

(FeatureCollection)又三角形组成的多边形集合

旋转任何指定角度的GeoJSONFeature或Geometry,围绕其centroid(质心)或给定的pivot点进行旋转。

根据给定点和缩放因子对GeoJSON进行缩放(例如,factor=2将使GeoJSON变大200%)。如果提供了FeatureCollection,则原点将基于每个单独的Feature进行计算。

沿着提供的方向角,在指定距离上沿着一条恒向线(投影线)移动任何GeoJSONFeature或Geometry。

接受输入的(多)多边形,并返回一个合并后的多边形。如果输入的多边形不是连续的,此函数将返回一个MultiPolygon特征。

()

Voronoi每一个点都单独包围起来接受一个点的FeatureCollection和一个边界框,并返回一个Voronoi多边形的FeatureCollection。使用的Voronoi算法来自d3-voronoi包。

(FeatureCollection)

获取linestring,multi-linestring,multi-polygonorpolygon的自交点集合

(FeatureCollection)自交点集合

varpoly=turf.polygon([[[-12.034835,8.901183],[-12.060413,8.899826],[-12.03638,8.873199],[-12.059383,8.871418],[-12.034835,8.901183],],]);varkinks=turf.kinks(poly);kinks

获取任意线与多边形的交点

接受LineString或MultiLineString,并返回一个包含所有重叠线段的FeatureCollection

(FeatureCollection)重叠部分的管道

合并一个要素集合(eg.Point,LineString,Polygon)为(eg.MultiPoint,MultiLineString,MultiPolygon)

varfc=turf.featureCollection([turf.point([19.026432,47.49134]),turf.point([19.074497,47.509548]),]);varcombined=turf.combine(fc)//-------varfc=turf.featureCollection([turf.point([19.026432,47.49134]),turf.point([19.074497,47.509548]), turf.lineString([[-24,63],[-23,60],[-25,65],[-20,69],])]);varcombined=turf.combine(fc);explode获取所有坐标点接受一个要素或一组要素,并将所有位置作为点返回。

varmultiGeometry=turf.multiPolygon([[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0],],],[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0],],[[100.2,0.2],[100.8,0.2],[100.8,0.8],[100.2,0.8],[100.2,0.2],],],]);varflatten=turf.flatten(multiGeometry);//变成两个PolygonlineToPolygon线转多边形转换(Multi)LineString(s)为(Multi)Polygon(s)

varline=turf.lineString([[125,-30],[145,-30],[145,-20],[125,-20],[125,-30],]);varpolygon=turf.lineToPolygon(line);polygonToLine多边形转线转换一个Polygon为(Multi)LineString或转换MultiPolygon为(Multi)LineString

varpoly=turf.polygon([[[125,-30],[145,-30],[145,-20],[125,-20],[125,-30],],]);varline=turf.polygonToLine(poly);polygonize将多线段转为多边形Polygonizes(Multi)LineString(s)intoPolygons.

ImplementationofGEOSPolygonizefunction(geos::operation::polygonize::Polygonizer).

Polygonizesasetoflinesthatrepresentsedgesinaplanargraph.Edgesmustbecorrectlynoded,i.e.,theymustonlymeetattheirendpoints.

Theimplementationcorrectlyhandles:

七.生成数据geometry生成一个几何图形根据类型和坐标生成一个几何图形

(Geometry)

vartype="Point";varcoordinates=[110,50];vargeometry=turf.geometry(type,coordinates);//=>geometrygeometryCollection几何集合基于坐标数组创建一个Feature

varpt=turf.geometry("Point",[100,0]);varline=turf.geometry("LineString",[[101,0],[102,1],]);varcollection=turf.geometryCollection([pt,line]);//=>collectiongetGeom获取Geometry对象从FeatureorGeometryObject中获取Geometry对象

(Geometry|null)

varpoint={type:"Feature",properties:{},geometry:{type:"Point",coordinates:[110,40],},};vargeom=turf.getGeom(point);//={"type":"Point","coordinates":[110,40]}point根据坐标生成点要素根据坐标生成点要素

varpoint=turf.point([-75.343,39.984]);//=pointmultiPoint根据坐标数组生成多点要素根据坐标数组生成多点要素

varmultiPt=turf.multiPoint([[0,0],[10,10],]);//=multiPtpoints生成点要素集合从点坐标数组创建点要素集合

varpoints=turf.points([[-75,39],[-80,45],[-78,50],]);//=pointslineString根据坐标生成线要素根据一组点位生成线要素

varlinestring1=turf.lineString([[-24,63],[-23,60],[-25,65],[-20,69],],{name:"line1"},);varlinestring2=turf.lineString([[-14,43],[-13,40],[-15,45],[-10,49],],{name:"line2"},);//=linestring1//=linestring2multiLineString根据坐标生成多线要素根据一组坐标数组生成多线要素

varmultiLine=turf.multiLineString([[[0,0],[10,10],],]);//=multiLinepolygon根据一组首尾相连的坐标生成多边形要素根据一组首尾相连的坐标生成多边形要素

varpolygon=turf.polygon([[[-5,52],[-4,56],[-2,51],[-7,54],[-5,52],],],{name:"poly1"},);//=polygonmultiPolygon生成多组多边形要素生成多组多边形要素

varmultiPoly=turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0],],],]);//=multiPolypolygons生成一个多边形要素集合从一组多边形坐标中创建多边形要素集合

varpolygons=turf.polygons([[[[-5,52],[-4,56],[-2,51],[-7,54],[-5,52],],],[[[-15,42],[-14,46],[-12,41],[-17,44],[-15,42],],],]);//=polygonsfeature根据几何体(Geometry)生成要素将GeoJSON图形包裹在一个GeoJSON要素中

vargeometry={type:"Point",coordinates:[110,50],};varfeature=turf.feature(geometry);//=featurefeatureCollection根据要素(Feature)生成要素集合接收一个或多个要素,返回要素集合

varlocationA=turf.point([-75.343,39.984],{name:"LocationA"});varlocationB=turf.point([-75.833,39.284],{name:"LocationB"});varlocationC=turf.point([-75.534,39.123],{name:"LocationC"});varcollection=turf.featureCollection([locationA,locationB,locationC]);//=collectioncircle根据点和半径计算圆接受一个Point,根据给定的半径(以度degrees、弧度radians、英里miles或公里kilometers表示)和精度步长,计算圆形多边形。

(Feature)范围要素

生成一个椭圆

varcenter=[-75,40];varxSemiAxis=5;varySemiAxis=2;varellipse=turf.ellipse(center,xSemiAxis,ySemiAxis);lineArc生成弧线生成一条弧线,根据圆心、半径、开始方位、结束方位.(0度为正北,顺时针为正方向)

varcenter=turf.point([-75,40]);varradius=5;varbearing1=25;varbearing2=47;vararc=turf.lineArc(center,radius,bearing1,bearing2);sector生成扇形生成一个扇形或圆;需要提供圆心、半径、开始方位、结束方位。(0度为正北,顺时针为正方向)

用于在GeoJSON对象周围创建一个缓冲区(bufferzone)。这个缓冲区可以看作是围绕一个几何对象的一定范围的扩展区域,通常用于分析距离、影响范围或安全区域等地理问题。

buffer函数能够为点、线、多边形等几何对象生成指定距离的缓冲区。这些缓冲区通常用于分析周围区域受几何对象影响的范围,比如交通影响区、安全缓冲区等。

接受一组点,并返回一个凹多边形(Polygon)或多部分凹多边形(MultiPolygon)。在内部,这使用turf-tin来生成几何图形。

接受一个Feature或FeatureCollection,并返回一个凸包Polygon。在内部,这使用实现了monotonechainhull的convex-hull模块。

把(Multi)LineStringor(Multi)Polygon的每相邻两个点截取为一条短线(只包含两个顶点)

(FeatureCollection)只包含两个顶点的线段集合

varpolygon=turf.polygon([[[-50,5],[-40,-10],[-50,-10],[-40,5],[-50,5],],]);varsegments=turf.lineSegment(polygon);lineSlice根据两个点截取线根据输入的两个坐标截取线。这两个坐标不是必须精确的落在线上

varline=turf.lineString([[-77.031669,38.878605],[-77.029609,38.881946],[-77.020339,38.884084],[-77.025661,38.885821],[-77.021884,38.889563],[-77.019824,38.892368],]);varstart=turf.point([-77.029609,38.881946]);varstop=turf.point([-77.021884,38.889563]);varsliced=turf.lineSlice(start,stop,line);lineSliceAlong根据两个距离截取线提供从线头开始的两个距离,分别计算出起始点和终止点,然后截取线

varline=turf.lineString([[7,45],[9,45],[14,40],[14,41],]);varstart=12.5;varstop=25;varsliced=turf.lineSliceAlong(line,start,stop,{units:"miles"});lineSplit根据另一个要素要分割线根据另一个GeoJSON要素来分割线

将LineString分割成指定长度的小段

varline=turf.lineString([[-95,40],[-93,45],[-85,50],]);varchunk=turf.lineChunk(line,15,{units:"miles"});polygonTangents点到多边形的切线从一个点找到一个(Multi)Polygon的切线。

varpolygon=turf.polygon([[[11,0],[22,4],[31,0],[31,11],[21,15],[11,11],[11,0],],]);varpoint=turf.point([61,5]);vartangents=turf.polygonTangents(point,polygon);mask从一个区域(掩膜)中挖去一块区域提供一个多边形,和一个可选的掩膜要素(不提供则默认为掩膜覆盖全球),然后从掩膜中挖去多边形区域。剩余的区域作为多边形对象返回

接受一个要素或要素集合,并返回一个确保位于该要素表面上的点。(有点类似于中心点)

varpolygon=turf.polygon([[[116,-36],[131,-32],[146,-43],[155,-25],[133,-9],[111,-22],[116,-36],],]);varpointOnPolygon=turf.pointOnFeature(polygon);unkinkPolygon自动拆分自交多边形自动拆分自交的多边形,并返回拆分后的多边形集合

varpoly=turf.polygon([[[0,0],[2,0],[0,2],[2,2],[0,0],],]);varresult=turf.unkinkPolygon(poly);八.Random随机randomLineString生成随机的线randomLineString生成随机的linestring

varlineStrings=turf.randomLineString(25,{bbox:[-180,-90,180,90]});//=>lineStringsrandomPoint生成随机的点随机生成point

varpoints=turf.randomPoint(25,{bbox:[-180,-90,180,90]});//=>pointsrandomPolygon生成随机多边形随机生成polygon

varpolygons=turf.randomPolygon(25,{bbox:[-180,-90,180,90]});//=>polygonsrandomPosition生成一个随机位置生成一个随机位置:[number,number]

([number,number])

varposition=turf.randomPosition([-180,-90,180,90]);//[175.99717868600436,23.778125886711308]//=>positionsample随机抽样在给定的集合中随机抽取指定数量的样本

varpoints=turf.randomPoint(100,{bbox:[-80,30,-60,60]});varsample=turf.sample(points,5);十.Interpolation插值interpolateisobandsisolinesplanepointtin十二.Grids网格hexGrid生成六角网格获取一个边界范围、单元格直径。然后返回一个元素集合,包含六角形或三角形

在一片区域内生成点网格

在一片区域内生成方形网格

在一片区域内生成三角网格

获取任何GeoJson对象的所有坐标

varfeatures=turf.featureCollection([turf.point([26,37],{foo:"bar"}),turf.point([36,53],{hello:"world"}),]);varcoords=turf.coordAll(features);//=[[26,37],[36,53]]coordEach坐标遍历遍历GeoJson对象的所有坐标,类似Array.forEach()

(void)

varfeatures=turf.featureCollection([turf.point([26,37],{foo:"bar"}),turf.point([36,53],{hello:"world"}),]);turf.coordEach(features,function(currentCoord,coordIndex,featureIndex,multiFeatureIndex,geometryIndex,){//=currentCoord//=coordIndex//=featureIndex//=multiFeatureIndex//=geometryIndex},);coordReduce坐标遍历缩减-Array.reducefeatureEach要素遍历-Array.forEachfeatureReduce要素遍历缩减-Array.reduceflattenEach扁平遍历--Array.forEachflattenReduce扁平遍历--Array.reducegeomEach几何图形遍历--Array.forEachgeomReduce几何图形遍历--Array.reducepropEach属性遍历--Array.forEachpropReduce属性遍历--Array.reducesegmentEach多坐标元素拆分遍历--Array.forEachsegmentReduce多坐标元素拆分遍历--Array.reducegetCoord解包坐标(PointFeature,Geometryorasinglecoordinate)从PointFeature,Geometryorasinglecoordinate中解包坐标

varpt=turf.point([10,10]);varcoord=turf.getCoord(pt);//=[10,10]getCoords解包坐标(Feature,GeometryObjectoranArray)从Feature,GeometryObjectoranArray中解包坐标

(Array)

varpoly=turf.polygon([[[119.32,-8.7],[119.55,-8.69],[119.51,-8.54],[119.32,-8.7],],]);varcoords=turf.getCoords(poly);//=[[[119.32,-8.7],[119.55,-8.69],[119.51,-8.54],[119.32,-8.7]]]十六.类型守卫getType获取GeoJson对象类型获取GeoJson对象类型,优先拿Geometry的类型

(string)

varpoint={type:"Feature",properties:{},geometry:{type:"Point",coordinates:[110,40],},};vargeom=turf.getType(point);//="Point"featureOf要素的类型是否匹配指定类型强制执行对Turf的Feature输入类型的期望。内部使用geojsonType来判断几何类型

用于验证GeoJSON对象是否是指定类型的几何集合。它通常在开发中用来确保函数接收到的数据是预期类型的集合,避免数据类型错误引发的潜在问题。

主要用途:

如果feature特征是指定的类型,turf.featureOf将返回true。如果检测到类型不匹配,则会抛出错误,提供详细的错误信息。

try{turf.featureOf(turf.lineString([[30,30],[40,40]]),'Point','myFunction');console.log("AllfeaturesarePoints.");}catch(e){console.error(e.message);}//turfdemo1.html:24InvalidinputtomyFunction:mustbeaPoint,givenLineStringcollectionOf集合中是否全部包含指定类型强制执行对Turf的FeatureCollection输入类型的期望。内部使用geojsonType来判断几何类型

用于验证GeoJSON对象是否包含指定类型的几何集合。它通常在开发中用来确保函数接收到的数据是预期类型的集合,避免数据类型错误引发的潜在问题。

如果featureCollection中的所有特征都是指定的类型,turf.collectionOf将返回true。如果检测到类型不匹配,则会抛出错误,提供详细的错误信息。

constturf=require('@turf/turf');//创建一个FeatureCollection,其中包含点和线constfeatureCollection=turf.featureCollection([turf.point([10,10]),turf.point([20,20]),turf.lineString([[30,30],[40,40]])]);//验证featureCollection中的所有特征是否都是Point类型try{turf.collectionOf(featureCollection,'Point','myFunction');console.log("AllfeaturesarePoints.");}catch(e){console.error(e.message);}//turfdemo1.html:24InvalidinputtomyFunction:mustbeaPoint,givenLineStringgeojsonType地理数据的类型是否匹配指定类型强制执行对Turf的Feature输入类型的期望。内部使用geojsonType来判断几何类型

用发和作用同featureOf,区别:geojsonType更通用,可以验证任意GeoJSON数据的类型,而featureOf只适用于Feature对象,并且只能验证geometry的类型。在编写处理GeoJSON数据的代码时,选择哪个函数取决于你需要验证的数据类型的范围。

判断一个环线坐标是否是顺时针

(boolean)

varclockwiseRing=turf.lineString([[0,0],[1,1],[1,0],[0,0],]);varcounterClockwiseRing=turf.lineString([[0,0],[1,0],[1,1],[0,0],]);turf.booleanClockwise(clockwiseRing);//=trueturf.booleanClockwise(counterClockwiseRing);//=falsebooleanConcave多边形是否凹判断多边形是否凹

varconvexPolygon=turf.polygon([[[0,0],[0,1],[1,1],[1,0],[0,0],],]);turf.booleanConcave(convexPolygon);//=falsebooleanContains第二个要素是否完全包含在第一个要素中两个几何图形的内部必须相交次要几何图形的内部和边界不得与主要几何图形的外部相交结果与booleanWithin相反用法:

varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);varpoint=turf.point([1,2]);turf.booleanContains(line,point);//=truebooleanWithin第一个要素是否完全包含在第二个要素中两个几何图形的内部必须相交主要几何图形的内部和边界不得与次要几何图形的外部相交结果与booleanContains相反用法:

varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);varpoint=turf.point([1,2]);turf.booleanWithin(point,line);//=truebooleanTouches是否刚好接触两个要素是否刚好接触(两个几何图形的公共点均不与两个几何图形内部相交)

varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);varpoint=turf.point([1,1]);turf.booleanTouches(point,line);//=truebooleanCrosses是否交叉如果交集产生的几何体的尺寸比两个源几何体的最大尺寸下,并且交集位于两个源集合的内部,则返回true只支持以下要素的比较:multipoint/polygon,multipoint/linestring,linestring/linestring,linestring/polygon,linestring/multipolygon注意完全包含会返回false注意仅仅只是边缘接触返回false

varline1=turf.lineString([[-2,2],[4,2],]);varline2=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);varcross=turf.booleanCrosses(line1,line2);//=truebooleanIntersects是否相交如果两个要素相交返回true

和booleanCrosses的区别:

varpoint=turf.point([2,2]);varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);turf.booleanIntersects(line,point);//=true=turf.booleanCrosses(line1,line2);//=truebooleanDisjoint是否不拼接如果交集是空集,就返回true

varpoint=turf.point([2,2]);varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);turf.booleanDisjoint(line,point);//=truebooleanEqual同一类型的图形是否拥有相同的坐标确定同一类型的两个几何图形是否具有相同的x,y坐标值

varpt1=turf.point([0,0]);varpt2=turf.point([0,0]);varpt3=turf.point([1,1]);turf.booleanEqual(pt1,pt2);//=trueturf.booleanEqual(pt2,pt3);//=falsebooleanOverlap两个要素是否部分重叠booleanParallel两条线是否平行如果两条线的每一个对应线段平行,则返回true

varline1=turf.lineString([[0,0],[0,1],]);varline2=turf.lineString([[1,0],[1,1],]);turf.booleanParallel(line1,line2);//=truebooleanPointInPolygon点是否在多边形中判断点是否在(多)多边形内

varpt=turf.point([-77,44]);varpoly=turf.polygon([[[-81,41],[-81,47],[-72,47],[-72,41],[-81,41],],]);turf.booleanPointInPolygon(pt,poly);//=truebooleanPointOnLine点是否在线上判断点是否线上

varpt=turf.point([0,0]);varline=turf.lineString([[-1,-1],[1,1],[1.5,2.2],]);varisPointOnLine=turf.booleanPointOnLine(pt,line);//=truebooleanValid是否是有效的几何图形根据OGCSimpleFeatureSpecification判断输入是否是有效的几何图形

varline=turf.lineString([[1,1],[1,2],[1,3],[1,4],]);turf.booleanValid(line);//=>trueturf.booleanValid({foo:"bar"});//=>false十九.其他clone深复制GeoJSON对象返回传递的GeoJSON对象的克隆副本,包括可能的'ForeignMembers'。比常见的JSON.parse+JSON.stringify组合方法快大约3-5倍。

varline=turf.lineString([[-74,40],[-78,42],[-82,35],],{color:"red"},);varlineCloned=turf.clone(line);tag标记空间连接接受一组点和一组多边形和/或多多边形,并执行空间连接。

典型应用场景:

注意:

varpt1=turf.point([-77,44]);varpt2=turf.point([-77,38]);varpoly1=turf.polygon([[[-81,41],[-81,47],[-72,47],[-72,41],[-81,41],],],{pop:3000},);varpoly2=turf.polygon([[[-81,35],[-81,41],[-72,41],[-72,35],[-81,35],],],{pop:1000},);varpoints=turf.featureCollection([pt1,pt2]);varpolygons=turf.featureCollection([poly1,poly2]);vartagged=turf.tag(points,polygons,"pop","population");

THE END
1.pointto是什么意思,pointto翻译为:显示…的位置[方向]point to基本解释 显示…的位置[方向];表明;指画;指 网络释义 1. 指向 2. 指向,针对 4. 指向(远) 5. 指着 6. 意味着 7. 针对 8. 表示 point to的用法和例句提示:点击例句中的单词,就可以看到词义解释 And all signspointtoeven more cuts ahead . ...https://fy.tingclass.net/w/point_to
2.point的用法总结大全.docx文档介绍:该【point的用法总结大全 】是由【海洋里徜徉知识】上传分享,文档一共【4】页,该文档可以免费在线阅读,需要了解更多关于【point的用法总结大全 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印...https://m.taodocs.com/p-1113176382.html
3.pointtopoint是什么意思pointtopoint在线翻译英语读音用法海词词典,最权威的学习词典,为您提供pointtopoint的在线翻译,pointtopoint是什么意思,pointtopoint的真人发音,权威用法和精选例句等。http://www.dict.cn/pointtopoint
1.pointto是什么意思pointto的意思用法例句沪江词库精选point to是什么意思、英语单词推荐、中英文句子翻译、英语短语 指出,指明显示,表明 相似短语 at the point of adv.靠近,接近 f the sword adv.在暴力威胁下 in point adv.相关的,适用的 on the point of adv.正要...的时候 point at 1. 指向;瞄准 2. 引起注意 3. 使人注意到 4....https://www.hujiang.com/ciku/point_to/
2.pointto是什么意思pointto单词用法英汉词典High electricity bills point to a poor heating system or bad insulation. 高额的电费账单表明供暖系统较差或者是隔热材料不好。《柯林斯英汉双解大词典》 Point to the closet. 指向橱柜。 I point to a girl. 我指向一个女孩。 I'll point to it. 我会指向它。 I point to a boy. 我指向一...https://www.cidianbao.com/yinghan/zfgxq71.html
3."Point"的意思和用法HiNative"Point" 的用法和例句 關於Point的意思和用法的提問 包含"Point"的句子的意思 Q:pointthe way是什麼意思 A:Point the way means to indicate the right direction. "I hope you canpointthe way." 查看更多回答 Q:pointa finger是什麼意思 A:Point a finger means to accuse somebody....https://hinative.com/zh-TW/dictionaries/point
4.CGContextAddArc和CGContextAddArcToPoint理解及用法startAngle为0,绿色箭头的地方。endAngle为M_PI_4,黄色箭头的地方。 clockwise为0,按照红色箭头往下绘制图形。所以效果就是红色的扇形。 如果clockwise为1,则是蓝色部分区域。 CGContextAddArc **sA**: startAngle **eA**: endAngle /* The arc is tangent to the line from the current point to `(x1, ...https://www.jianshu.com/p/a6e93291cc4c
5.recttransformutility.screenpointtolocalpointinrectangle...Debug.Log("Local point: " + localPoint); } } } 该示例代码将在单击目标RectTransform时,将屏幕上的点转换为目标RectTransform内的本地坐标,并在控制台中输出该本地坐标。 RectTransformUtility.ScreenPointToLocalPointInRectangle 用法 RectTransformUtility.ScreenPointToLocalPointInRectangle 是 Unity 引擎中的一个...https://wenku.csdn.net/answer/91650e65268a219fcf97bea11fdabe58
6.point用法高中英语单词point用法 point可作及物和不及物动词,常用于下列短语。(1)point out意为“指出,使注意”,后面可接名词,也可接从句作宾语。(2)point to意为“指向”,强调方向,并不是指着该物体。而 point at 表示“指着某一物体,指人时一般表示粗鲁或不礼貌”。https://m.027art.com/gaokao/HTML/12687649.html
7.分析point用法解析分析point用法解析 ①point to“显示,说明”. 例如:All the evidence point to his guilt. 所有的证据(物证)表明他的犯罪. ②There is no point in doing sth. 做某事没有意义. be on the point of 意思是“正要……的时候,即将……之时”,in point of 意思是“关于,就……而言”,up to a point ...https://www.ewt360.com/news/Detail/22204
8.初中英语中考短语pointto指远处的事物, 离动作的执行者较远。 Hepointedtothehighmountainsfaraway.他指向远处的高山。 13.seesb.dosth.与seesb.doingsth. 相同点:这两个短语都含有“看”的意思。 区别是:seesb.dosth.是指看见某人做过某事。 Isawhim gointotheclassroom. ...https://www.360wenmi.com/f/filetm4yzd8z.html
9.point是什么意思托福词汇point用法例句读音音标翻译n. to be beside the point:无关宏旨;偏离主题;说话跑题;没说到点子上 n. = power point<英> n. = socket<非正式,英> n. at some point:在某一时刻 n. at the point of sth:濒临…;靠近…;就要…;接近…;临近… n. case in point:典型的例子;恰当的例证 n. in point of fact:其实...https://top.zhan.com/mob/cihui/toefl-point.html
10.Java中org.springframework.amqp.core.AmqpAdmin类用法示例代码...PointToPointSubscribableAmqpChannel.doDeclares() @OverrideprotectedvoiddoDeclares(){AmqpAdminadmin=getAdmin();if(admin!=null&&this.queue!=null&&admin.getQueueProperties(this.queue.getName())==null){admin.declareQueue(this.queue);}} 代码来源:spring-projects/spring-integration ...http://verytoolz.com/blog/12d273320c/
11.home在此句中的用法drive one's point home 是习语。her point 意思是“她的观点”,dirve...home,字面意思是,把车...https://www.cpsenglish.com/question/44560
12.mainpoint是什么意思,mainpoint用法例句,怎么读,读音,英汉翻译...2.The main point is to find investments to him or to his supervision of the mine production. 主要就是给他找点投资项目,或者给他监管矿山的生产。 3.But not this time, at least not at one central point, the main point of this book. Here is one of several statements he makes. ...https://www.zhaodanci.com/dict/main%20point.html
13.hitapoint是什么意思中文翻译在英文中,还有一些类似的短语,如“make a point”、“get to the point”,容易与“hit a point”混淆。但它们的含义并不完全相同。“make a point”表示提出一个观点或意见,“get to the point”表示说话直截了当地谈论重点。 纠正方法:正确理解句子中使用的短语,并根据具体语境选择合适的翻译。 https://www.68jy.net/zixun/mszhishi/185644.html
14.2013高考英语备考:pointout用法说明《2013高考英语备考:point out 用法说明》由高考英语网发布,主要内容: point out 指出(to+n.)https://www.liuxue86.com/a/654958.html
15....pointof的音标onthepointof的发音She looked on the point of tears. 她看起来就要哭了。 柯林斯例句 5、 I was on the point of going to bed when you rang. 你打电话的时候我正要睡觉. 《简明英汉词典》 6、 He bit his tongue as he found himself on the point of saying "follow that car". 他想说“跟上那辆车”,...https://mdict.yingyuw.cn/on%20the%20point%20of
16.八年级上册英语第一单元教案(优秀5篇)3.Now,pleasematcheachphrasewithoneofthepicturesnexttothenameofthe activity,pointtothesampleanswer. 4.Checktheanswers.Answers:1.f2.b3.g4.e5.c6.a7.d III.Listening 1.Pointtothepictureonthescreen. Say:LookatthepictureA.WheredidTinagoonvacation?Shewenttomountains. ...https://www.baihuawen.cn/yingyu/xuexi/37423.html