我有一个 3 维空间中包含大约 2000 万个点 (x,y,z) 的大型数据集。我知道这些点组织在密集区域中,但这些区域的大小各不相同。我认为标准的无监督 3D 聚类应该可以解决我的问题。
由于我无法先验估计簇的数量,因此我尝试使用 k 范围较宽的 k 均值,但速度很慢,而且我必须估计每个 k 分区的重要性。基本上,我的问题是:如何将点中最重要的部分提取到簇中?
我有一个数据库优先的 .net core 3.1 Web 应用程序,它通过一geography列连接到 SQL Server 数据库表。数据库脚手架和应用程序构建完成没有任何问题,但是当我运行应用程序时出现错误。如果我添加该[NotMapped]属性,错误就会消失,但显然该属性未映射。可能是什么问题?
无法映射属性“Geometry.UserData”,因为它属于“object”类型,它不是受支持的基本类型或有效的实体类型。显式映射此属性,或使用 '[NotMapped]' 属性或使用 'OnModelCreating' 中的 'EntityTypeBuilder.Ignore' 忽略它。”
我已经安装了这些软件包
脚手架类看起来像这样
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public NetTopologySuite.Geometries.Geometry Location { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我正在 R 中使用 {terra} 的 lapp 函数,我想根据 rast_a 每个单元格中的值使用 rast_b 或 rast_c (以及其他一些数学)中的值更新 rast_a 。
样本数据
rast_a <- rast(ncol = 2, nrow = 2)
values(rast_a) <- 1:4
rast_b <- rast(ncol = 2, nrow = 2)
values(rast_b) <- c(2,2,2,2)
rast_c <- rast(ncol = 2, nrow = 2)
values(rast_c) <- c(3,3,3,3)
Run Code Online (Sandbox Code Playgroud)
问题
这是我的(错误的)尝试。
my_update_formula <- function(a, b, c) {
a[a == 1] <- b[a == 1] + 10 + 20 - 30
a[a == 2] <- c[a == 2] + 10 + …Run Code Online (Sandbox Code Playgroud) 简单的问题,我想知道质心方法是否在MySQL空间扩展中实现.我查看了文档,但未能找到明确的答案.
我有一个mapbox,想要在其上显示一层esri数据.我正在从这个json文件中获取数据:
数据['results'] [0] ['value'] ['features']数组看起来像这样:
[{'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}}, {'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}},{ 'attributes':{'key':'value'}},{'geometry':{'paths':[[ - 13273770,4064608],[ - 13273762,4064613],....]}}}]
我的问题是关于几何数组.那里的数据没有Lat/Lng值(我希望这样),所以我不知道如何将这些添加到我的地图中.我是GIS的新手,到目前为止我所做的研究都指向了SpatialReferences.任何帮助显然非常感谢!
我正在尝试使用 automap 包中的 autoKrige() 函数来实现通用克里金法的简单应用。我有一个不规则间隔的测量网格,我想在精细的空间尺度上在它们之间进行插值。示例代码:
library('automap')
# create an irregularly spaced grid
y <-x <-c(-5,-4,-2,-1,-0.5,0,0.5,1,2,4,5)
grid <-expand.grid(x,y)
names(grid) <-c('x', 'y')
# create some measurements, greatest in the centre, with some noise
vals <-apply(grid,1, function(x) {12/(0.1+sqrt(x[1]^2 + x[2]^2))+rnorm(1,2,1.5)})
# get data into sp format
s <-SpatialPointsDataFrame(grid, data.frame(vals))
# make some prediction locations and get them into sp format
pred <-expand.grid(seq(-5,5,by=0.5), seq(-5,5,by=0.5))
pred <-cbind(pred[,1], pred[,2]) # this seems to be needed, not sure why
pred <-SpatialPoints(pred)
# try universal kriging
surf <-autoKrige(vals~x+y, …Run Code Online (Sandbox Code Playgroud) Sql 服务器具有空间数据类型几何和地理。mysql中有几何类型可用,但我在mysql中没有找到mysql geography。
我要检查位置(纬度,经度)与多边形地理围栏的交集。我已经用 java 完成了这个,但是那个解决方案太慢了。因此,在 sql server 数据库中,我使用 geography 数据类型来存储多边形地理围栏点数据。这给了我更快的结果。
在 mysql 中,我找不到 geograqphy 数据类型。纬度和经度代表角度。
那么如果我使用几何数据类型在 mysql 中存储多边形 geofece 点(纬度,经度)呢?
它会给我与地理相同的结果吗?
我正在尝试使用 ggplot 在我用颜色编码的从 0 到 4 的因子类型向量上呈现一个地图。该向量位于我命名的数据框中spat.dataframe,向量为qt。
# plot
ggplot(spat.dataframe, aes(long,lat,group=group)) + # the data
geom_polygon(aes(fill=as.factor(qt))) + # make polygons
scale_fill_manual(values = c("0"="#F0F0F0","1"="green","2"="red","3"="blue","4"="purple"),
labels = c(paste0("white (",length(spat.dataframe[spat.dataframe$qt==0,]),")"),
paste0("green (",length(spat.dataframe[spat.dataframe$qt==1,]),")"),
paste0("red (",length(spat.dataframe[spat.dataframe$qt==2,]),")"),
paste0("blue (",length(spat.dataframe[spat.dataframe$qt==3,]),")"),
paste0("pink (",length(spat.dataframe[spat.dataframe$qt==4,]),")")),
drop=F,
name=NULL) +
theme(line = element_blank(), # remove the background, tickmarks, etc
axis.text = element_blank(),
axis.title = element_blank(),
panel.background = element_blank()) +
ggtitle(title) +
geom_path( colour = "#6b6b6b", size = .5 ) +
coord_equal()
Run Code Online (Sandbox Code Playgroud)
我的问题在于图例部分,因为我想要做的是显示所有图例选项,即使矢量中没有列出任何图例选项。所以颜色值也是蓝色和紫色的。尝试起来可能有点困难,但我希望它出现在我的图形上,以便我还可以显示可能的值的数量以及与该值关联的多边形的数量。因此,对于我的向量 中的值 3 和 4 …
我有兴趣找到暗灰色区域的区域,在r中我使用了spatstat包的区域功能但是非常耗时,因为我需要运行mh算法,我已经读过我可以用monte carlo计算这个区域方法,但我不知道如何进行,请有人可以帮助我吗?
一些代码示例来自spatstat书中的情节和区域:
source("figurelayout.R")
source("startup.R")
llibrary(spatstat)
requireversion(spatstat, "1.41-1.073")
W <- as.owin(swedishpines)
x <- c(28,29,55,60,66)
y <- c(70,38,32,72,59)
X <- ppp(x=x,y=y, window = W)
u <- list(x=48,y=50)
u <- as.ppp(u, W)
rad <- 14
Xplusr <- dilation(X, rad) #
uplusr <- disc(rad, u) #bola de radio rad con centro en u
ovlap <- intersect.owin(uplusr, Xplusr)
B<-setminus.owin( disc( rad, c(u$x, u$y) ), Xplusr)
AIdemo <- layered(W,
ovlap,
Xplusr,
uplusr,
X,
u,B)
layerplotargs(AIdemo) <- list(list(),
list(col="darkgrey", border=NA),
list(lwd=2),
list(lwd=2, lty=2),
list(pch=16),
list(pch=3),
list(col="red", …Run Code Online (Sandbox Code Playgroud) 在下面的reprex中,我在某些点和多边形数据上运行空间连接,但在使用sp包时使用包时出乎意料地获得了不同的结果sf.为什么是这样?
我试图计算网格方块acled内的点数prio,但是如下所示,我的计数在包之间有所不同,即使运行st_covers连接sf,我应该知道在功能上与使用over方法相同sp.
library(sp) # packageVersion("sp") #> [1] ‘1.2.7’
library(sf) # packageVersion("sf") #> [1] ‘0.6.3’
library(rgdal)
library(maptools)
library(dplyr); library(tibble)
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的示例数据:
# prio (polygon squares) and acled (points); in both sp and sf objects:
# prio sf polygons object
priosf <- structure(list(
CELL_ID = c(180365, 176783, 150830, 145866, 140055),
gwno = c(615L, 616L, 432L, 626L, 475L),
POP = c(111983.7, 107369.7, 12169.35, 23005.76, 527012.1),
prio_country = c("Algeria", …Run Code Online (Sandbox Code Playgroud) 这个问题对于你们中的一些人来说可能是微不足道的,但事实就是如此。我实际上试图用截距和单个变量来模拟一个简单的非齐次点过程。我的目标只是使用 spatstat 和 rstan 包恢复这 2 个系数。
这是模拟的代码:
library(spatstat)
library(sf)
library(sp)
library(maptools)
library(raster)
library(fields)
library(rstan)
library(tidyverse)
# Generate species distribution
genDat_pp <- function(b1, b2, dim, plotdat = TRUE){
# Define the window of interest
win <- owin(c(0,dim[1]), c(0,dim[2]))
# set number of pixels to simulate an environmental covariate
spatstat.options(npixel=c(dim[1],dim[2]))
y0 <- seq(win$yrange[1], win$yrange[2],
length=spatstat.options()$npixel[2])
x0 <- seq(win$xrange[1], win$xrange[2],
length=spatstat.options()$npixel[1])
multiplier <- 1/dim[2]
# Make the environmental covariate
gridcov <- outer(x0,y0, function (x,y) multiplier*y + 0*x)
# Set the coefficients
beta0 …Run Code Online (Sandbox Code Playgroud) 我试图返回一组点的边界(如下所示)。我尝试了三种使用 {sf} 包的方法。
创建测试数据
t <-
crossing(x=1:5, y=1:5) %>%
filter(!(x > 3 & y > 3)) %>%
st_as_sf(coords=c("x", "y"))
Run Code Online (Sandbox Code Playgroud)
ggplot()+
geom_sf(data=t)+
geom_segment(aes(x = c(1, 1, 3, 3, 5, 5),
xend = c(1, 3, 3, 5, 5, 1),
y = c(1, 5, 5, 3, 3, 1),
yend = c(5, 5, 3, 3, 1, 1),
col = "What I want"))
Run Code Online (Sandbox Code Playgroud)
ggplot()+
geom_sf(data=t)+
geom_sf(data = t %>% st_union() %>% st_convex_hull(), aes(col="st_convex_hull"), fill=NA)+
geom_sf(data = t %>% st_union() %>% st_cast("POLYGON") %>% st_boundary(), …Run Code Online (Sandbox Code Playgroud) 我有一个很多横断面的SpatialLinesDataFrame,我想只使用R在线的北侧缓冲.有没有人知道模仿arcgis中缓冲工具的'Side Type'选项的工具?谢谢!