这个问题在这里已经有了答案:Whatisthefastestwaytofindthe"visual"centerofanirregularlyshapedpolygon?(15个答案)关闭9年前。我可以使用什么算法来获取多边形的中心(红点)情况1:我尝试使用maxX、maxY、minX、minY,但我得到了错误的点(黑点)情况2:我尝试获取第二个最大和最小坐标X和Y,但我遇到点小于5的多边形情况3:我添加ifpointcount但我得到了一些多边形的错误你能告诉我适合我的算法吗??注意:第四张图片的解释//mameanmax,mimeanmin,X1meanfirst,X2meanse
假设我有一个如下所示的多边形:我正在寻找一种C#算法,通过它我可以在任何多边形内找到一个点(可以是中间点,也可以是随机点)。为了找到质心,我使用了以下算法:privatePoint3dGetPolyLineCentroid(DBObjectpObject,doublepImageWidth,doublepImageHeight){Point2d[]pointArray=GetPointArrayOfRoomPolygon(pObject);doublecentroidX=0.0;doublecentroidY=0.0;doublesignedArea=0.0;doublex0=0.0;
我正在处理这个表面项目,我们有一个bingmap控件,我们想通过使用数据绑定(bind)在map上绘制多段线。发生的奇怪行为是当我单击“添加”按钮时,map上没有任何反应。如果我稍微移动map,就会在map上绘制多段线。另一种可行的情况是单击添加按钮一次,没有任何反应,再次单击它会绘制两条折线。(在我的手动收藏中,我有4个LocationCollections)所以第三次单击和第四次单击再次绘制两条线时也会发生同样的情况。我完全不知道该去哪里解决这个问题。我尝试订阅Layoutupdated事件,这两种情况都会发生。还在observablecollection中添加了一个collect
我正在处理地理信息,最近我需要画一个椭圆。为了与OGC约定兼容,我不能按原样使用椭圆;相反,我通过使用椭圆包含的多边形并使用任意多个点来使用多边形来近似椭圆。我用于为给定数量的点N生成椭圆的过程如下(使用C#和一个虚构的多边形类):PolygonCreateEllipsePolygon(Coordinatecenter,doubleradiusX,doubleradiusY,intnumberOfPoints){Polygonresult=newPolygon();for(inti=0;i到目前为止,这对我很有用,但我注意到它有一个问题:如果我的椭圆是“粗壮的”,即radiusX比ra
我需要在二维平面上的几个顶点中找到一个表面积最小的不规则多边形。不,这不是家庭作业。虽然我希望我现在回到学校。对于如何构建多边形有一些要求。假设我在8x8网格上绘制了3种不同类型的顶点(红色、绿色、蓝色)。我需要扫描此网格中满足红、绿、蓝组合要求的所有顶点,并选择表面积最小的顶点。获取不规则多边形的表面积非常简单。我主要关心的是高效扫描所有可能组合的性能。有关示例,请参见下图。所有三种类型都用于制作多边形,但圈出的一种具有最小的表面积,这是我的目标。与我尝试制作的原型(prototype)相比,这个场景得到了简化。多边形将由数十个(如果不是数百个)顶点构成,并且网格将大得多。此外,这将
我有一个SQLServer2008数据库,其中有一列地理类型存储澳大利亚各个地区的形状。我希望能够在Googlemap上绘制这些形状。这是一个ASP.NETC#网站。我已经搜索了有关如何执行此操作的任何示例,但找不到任何内容?有没有人有一些关于如何执行此操作的示例,特别是使用来自SQLServer的地理数据? 最佳答案 AdamW的回答是正确的,但是没有解决SqlGeography数据格式中的数据。包括对Microsoft.SqlServer.Types的引用SqlCommandcmd=newSqlCommand("SELECTST
当我在OpenLayersmap中绘制多边形时,我想知道标记是否在多边形内部。我在OpenLayersAPI中搜索,但没有找到解决方案。你可以在这个link中看到我的完整代码.我的印象是我必须修改这个功能:functionaddInteraction(){varvalue=typeSelect.value;if(value!=='None'){draw=newol.interaction.Draw({source:vectorSource,type:/**@type{ol.geom.GeometryType}*/(typeSelect.value)});map.addInteracti
要求:使用Leafletjsmapsapi,当客户点击标记时,应在标记正下方绘制一个矩形,并根据标记居中。然后单击另一个标记应删除以前的矩形并在新单击的标记下方绘制另一个矩形。问题:我正在使用下面的代码绘制一个多边形,我可以看到一个矩形。然后它在标记上绘制矩形。然后通过点击另一个标记,一个新的矩形被绘制出来。但是旧的矩形也仍然存在。问题:我应该如何实现该行为,以便在点击新标记时,旧矩形将从map中删除?//polygonvarlatBlockSize=0.002;varlngBlockSize=0.002;varroute=[newL.LatLng(parseFloat(custome
我目前正在为我们正在开发的网站构建“搜索区域”功能。有点像Rightmove上的那个.除了跟踪事件对多边形的更改(新点的设置和现有点的更改)之外,我已经启动并运行了所有功能。我需要能够将坐标发布到表单中以供提交。我已经尝试了editingevents的Google代码文档.每次尝试时,我都会收到有关“set_at”无法实现或我的对象未定义的消息。我想我知道的错误是thePolygon变量没有被传递给新的google.maps.event.addListener(thePolygon,'set_at',function(){//grabpathsforinfoWindowgrabPath
我有一个来自Googlemap的“地点”对象,它有一组坐标表示给定位置的边界框,比如伦敦。每组坐标都有一个纬度和经度。我写了下面的代码来找到中心点,但我不确定它是否真的产生了中心点。如果多边形有5个点而不是4个怎么办?另外,这是否可以通过更少的操作以更有效的方式完成?functionaverage(array){//Addtogetherandthendividebythelengthreturn_.reduce(array,function(sum,num){returnsum+num;},0)/array.length;}//Ihaveatwo-dimensionalarrayth