我在 QGIS 中遇到一个有趣的问题,我有一个点向量层(以紫色显示)和一个多边形层(绿色),并附加了许多元数据属性(即日期、ID 号等)。
我想将多边形中的数据附加到它们下面的点数据。问题是我有一些重叠,其中点数据被两个多边形覆盖。
在这些情况下,我本质上想复制点数据,因此在图层的属性表中,我为每个重叠的多边形都有一个点,以及相应的元数据。这意味着我不能简单地使用“按位置连接属性”工具,因为它只会分配来自最近的多边形的数据,或两个重叠的总和/平均值等。
数据说明如下。任何有关如何解决此问题的建议将不胜感激。
我想知道是否有一种简洁的方法来查找元组向量中的一个元素的最大值.例如,对于以下内容,假设我想在元组向量中找到元组的最大第二个值.
vector<tuple<int, int>> foo = { {12,1},{12,5},{5,6} };
Run Code Online (Sandbox Code Playgroud)
结果应该是6.
我可以这样做的一种方式是:
vector<double> allFoo;
for (int i = 0; i != size(foo); i++) {
allFoo.emplace_back(get<1>(foo[i]));
}
double maxVal = *max_element(allFoo.begin(), allFoo.end());
Run Code Online (Sandbox Code Playgroud)
我觉得,因为你实际上是在两次迭代,这可以更简单地完成吗?
我的元组技能有点受限,看起来你应该能够直接在foo上做某种max_element ...
这可能是一个非常简单的答案,但似乎无法找到解决方案.我有一个函数,它提供了一组参数:
theta <-
function(
e = 0.2,l= 0.01,p= 0.05)
return(c(e=e,l=l,p=p))
Run Code Online (Sandbox Code Playgroud)
因此,我可以从中返回一组参数,同时更改其中的一个或多个,例如通过使用
theta(e=0.1) #or
theta(l=0.1)
Run Code Online (Sandbox Code Playgroud)
我的问题是我想在另一个函数中调用此函数,其中该函数的输入是变量之一.
所以例如一个函数如:
randFunc<-function(parameter,value){
s<-theta(parameter=value)
return(s)
}
Run Code Online (Sandbox Code Playgroud)
然后用
randFunc("e",0.1) #or
randFunc("l",0.3)
Run Code Online (Sandbox Code Playgroud)
但是我会得到错误"theta中的错误(参数=值):unused argument(parameter = value)"
我尝试了一些东西,但似乎无法获得在theta函数中使用的参数"value".
我希望有人可以提供帮助,我是scala的新手,我在将输出写入文本文件时遇到了一些问题.
我有一个数据表,我已经编写了一些代码,一次只读一行,做我想做的事情,现在我需要它将该行写入文本文件.
例如,我有以下数据类型表
名称,日期,goX,goY,stopX,stopY
1,12/01/01,1166,2299,3300,4477
我的代码,取goX和goY的第一个字符并创建一个新的数字,在这个例子中1.2并且对stopX和stopY做同样的事情,所以在这种情况下你会得到3.4
我想在文本文件中获得的内容基本上如下:
去吧,停下来
1.2,3.4
我想让它经历数百行,直到我在文本文件中有一长串的开启和关闭.
我目前的代码如下,这几乎肯定不是最优雅的解决方案,但它是我的第一个scala/java代码:
import scala.io.Source
object FT2 extends App {
for(line<-Source.fromFile("C://Users//Data.csv").getLines){
var array = line.split(",")
val gox = (array(2));
val xStringGo = gox.toString
val goX =xStringGo.dropRight(1|2)
val goy = (array(3));
val yStringGo = goy.toString
val goY = yStringGo.dropRight(1|2)
val goXY = goX+"."+goY
val stopx = (array(4));
val xStringStop = stopx.toString
val stopX =xStringStop.dropRight(1|2)
val stopy = (array(3));
val yStringStop = stopy.toString
val stopY = yStringStop.dropRight(1|2)
val stopXY = stopX+"."+stopY
val GoStop = …Run Code Online (Sandbox Code Playgroud)