Open mdsumner opened 7 years ago
tidygraph solves the unique naming problem for vertices:
library(scgraph) library(scsf) g <- as_tbl_graph(scgraph::sc_as_igraph( PRIMITIVE(minimal_mesh))) g %>% mutate(name = 1:14) g %>% mutate(name = 1:14) %>% plot()
ESRI's terminology
Interesting stuff here, the terminology is terribly confusing but might give some clues about what happened
Boundary adventures
This is a good one:
Merge logic with this: https://rpubs.com/cyclemumner/neighbours02
Hone in on topology problems, unclear if gibble / silicate really helps more here apart from giving clear entity identities, but a good area to explore:
This is a good one, you could probably shoe-horn a solution with sf but it's very much suited to labelled segments that can be re-traced by label into paths.
https://stat.ethz.ch/pipermail/r-sig-geo/2018-January/026309.html
spdep
https://stat.ethz.ch/pipermail/r-sig-geo/2017-June/025756.html
Try the skimr approach, a good partnership with the spdep extractions.
ropenscilabs/skimr#88
See ideas here: https://twitter.com/jakub_nowosad/status/872263367599194117
Support gifti https://CRAN.R-project.org/package=gifti
much mesh sorcery here https://github.com/Lin20?tab=repositories
wow, that last link provide some deep stuff to ponder :metal: Edit: Note the quote (me on my fave trope again): "it panics when intersecting everything results in two distinct but exactly coincident edges" - and so does silicate
in current form. (That's no criticism!)
Yes, I have to park it a while but it's super interesting!
@jhollist a silicate form for profile data, this could be applied to Argo too , I would like to try a few things https://twitter.com/jhollist/status/977254736163491842?s=19
It's not even raining yet https://twitter.com/thomasp85/status/1014239835165548546?s=19
inlabru has mesh classes https://github.com/fbachl/inlabru/blob/devel/R/mesh.R
It includes a globe texture image of the earth, but uses a 1-sphere to map the texture, it doesn't have independent texture coordinates so all data must be converted for adding to the scene:
lat <- matrix(-asin(seq(-1, 1, len = n.smp)), n.smp, n.smp,
byrow = TRUE)
long <- matrix(seq(-180, 180, len = n.smp) * pi/180, n.smp,
n.smp)
x <- R * cos(lat) * cos(long)
y <- R * cos(lat) * sin(long)
z <- R * sin(lat)
rgl::persp3d(x, y, z, col = "white", texture = system.file("misc/Lambert_ocean.png",
package = "inlabru"), specular = "black", axes = axes,
box = box, xlab = xlab, ylab = ylab, zlab = zlab, normal_x = x,
normal_y = y, normal_z = z)
spatgraphs format
This is a little weird, the edges list is mapped to vertices, and elements list which vertices this vertex joins to, if any.
library(silicate)
x <- SC(minimal_mesh)
edges <- vector("list", nrow(x$vertex))
for (i in seq_along(edges)) {
edges[[i]] <- setdiff(c(match(x$edge$.vertex1[match(x$vertex$vertex_[i], x$edge$.vertex0)], x$vertex$vertex_),
match(x$edge$.vertex0[match(x$vertex$vertex_[i], x$edge$.vertex1)], x$vertex$vertex_)), i)
}
v <- as.matrix(x$vertex[c("x_", "y_")])
g <- as.sg(edges)
plot(g, v)
Pbufs for mesh https://gist.github.com/Jerdak/87ecbe4bcb0ba9e33b10
Graph colouring https://github.com/saurfang/graphcoloring/blob/master/README.md
https://www.r-spatial.org//r/2019/09/26/spatial-networks.html graph conversion
legacy terminology https://github.com/hypertidy/silicate/issues/28
Dewey's s2 globe
https://gist.github.com/paleolimbot/2aada1def3e7ce6ece92d823a9c3c07a
This uses very similar idioms: https://github.com/cran/RArcInfo
It's designed for .e00 format which is natively "arc-node" topology, i.e. the same as the underlying structures in the maps package, and pretty much what polygons in D3 uses. There's also code to read .adf coverages (but that might be raster data or TINs, or either).