Open liamxg opened 5 days ago
This is not reproducible since a minimal dataset is not provided. The problem is most likely your probably invalid geometries. A proper traceback()
would help, as it is possible that the shape
object is projected and your chosen plotting package imposes by default the plotting of a cartographically irrelevant grid in spherical coordinates.
Hi @rsbivand,
Thanks. I have attached the file. [Uploading wlf_nhr_fl_dfomasterlist_20190418.zip…]()
No file attached at all. Probably it is large and was not uploaded when you sent the comment. Create the smallest possible subset of the geometries that reproduces the problem.
Dear @rsbivand, Can I send it to your email, it is very important to me, thanks.
If it is too large for github, it will be too large for email. Probably too laarge anyway, and I never use ggplot2
anyway. If you cannot subset it, maybe read https://r.geocompx.org/ thoroughly first. Do you actually need to plot this object using ggplot2
? Does it plot with the sf
plot method? You can put the object on Google Drive if you like, but I'm unsure I can help with ggplot2
.
Dear @rsbivand,
I want to use this command:
ggplot() +
geom_sf(data = shape, size = 1.5, color = "black", fill = "cyan1") +
ggtitle("Lake Erie Outline") +
coord_sf()
the file is just 611KB, not too large to send by email.
Send by email.
Thanks, could you please tell me your email, thanks.
packageDescription("spdep")["Maintainer"]
. Note that github issues are world-readable so unsuitable for publishing email addresses. My email is easy to find online.
Thanks, sent.
The shapefile has been corrupted:
> st_bbox(shape)
xmin ymin xmax ymax
-1.797693e+308 -1.797693e+308 1.796500e+02 1.248330e+02
Both xmin and ymin are very large negative numbers, and ymax is too large, it is 124.833 which is well beyond 90, which is the North pole. Check with the source for your shapefile, it is not usable under any circumstances.
Dear @rsbivand,
I used the file: https://data.humdata.org/dataset/global-active-archive-of-large-flood-events-dfo
@liamxg, I think you can remove the outlier coordinates and then at least plot the points that have the correct coordinates.
library("sf")
library("ggplot2")
x = read_sf("wlf_nhr_fl_dfomasterlist_20190418.shp")
crds = st_coordinates(x)
idx = crds[, 1] < -180 | crds[, 1] > 180 | crds[, 2] < -90 | crds[, 2] > 90
# this removes the geometries (coordinates), but the records will still be in the data frame
x$geometry[idx] = st_point()
ggplot() +
geom_sf(data = x, size = 1.5, color = "black")
Dear @kadyb,
Amazing, thanks.
But do we know that the points with invalid coordinates really should have been invalid? Most of the points are invalid:
> table(idx)
idx
FALSE TRUE
924 3105
This really does not look like the outline of Lake Eire. The link to the actual dataset description would be helpful, is it: https://data.humdata.org/dataset/1fd855de-57c6-42b3-83e1-9cf989b0f70d/resource/984cc240-b2b7-4266-9f61-5715a9e10ff5. Why are the geometries of 3105 records suppressed?
The shapefile at https://floodobservatory.colorado.edu/temp/ is of extent polygons, but:
xx <- st_read("FloodArchive_region.shp")
sf_use_s2(FALSE)
plot(st_centroid(st_make_valid(st_geometry(xx))))
looks less odd. Still not Lake Eire, but a better map of large floods.
Why are the geometries of 3105 records suppressed?
I'm just guessing. Maybe they started to get information about the spatial extent of the floods since certain time (e.g. based on satellite images), and before that it was not taken into account. Then the Centroid_x
and Centroid_Y
columns assume 0. Some general textual information about the extent of the floods can be found in the Detailed_L
column.
Dear @edzer,
Please see below: