I am using python bokeh to project data over a world map.
I have a geopandas geopdwd init with crs="epsg:4326" and I want to project it to a mercator world map using bokeh tile. Then I fill countries have selected by some color.
Basicaly I need to convert my geopandas geometry (an epsg:4326) to epsg=3857 one.
For this purpose I do:
geopdwd = geopdwd.to_crs(epsg=3857)
But as you can see I have a problem with the russian part and specially with the Bering strait. It is colorized in the wrong part ...
I thing I need to force it to the right part of my world map.
Do have any idea to deal with that problem ? Do I need to use an other projection ?
For interested people I have solved the problem, have a look to my Bokeh thread : https://discourse.bokeh.org/t/bokeh-tile-antimeridian-problem/6978
Related
So I hope I can clearly communicate my issue. Since I'm fairly new to R and ArcGIS I may miss some obvious things.
Basically, I'm using R to process spatial data to make a canopy height model and detect tree tops. That parts fine. I then make a watershed segment plot using forestTools package, and visually it looks great, but how do I export that as a file I can add into ArcGIS?
I'll copy some of the code that goes into what I'm discussing.
Basically, I just followed this guide's supplemental material to get the tree detection https://www.degruyter.com/document/doi/10.1515/geo-2020-0290/html?lang=en.
With that done, I then used the forestTools package to creat an interesting segmentation polygon grid on the map. https://www.rdocumentation.org/packages/ForestTools/versions/0.2.5/topics/mcws
This is quickly the plotting code to get visualized what I want.
[1]: https://i.stack.imgur.com/7Y0EF.png
This is what the map looks like with those plotted.
[2]: https://i.stack.imgur.com/Kdfl6.png
The layer that I want to bring solo to ArcGIS is that last plot the mcws one. I'll show a pic of that as well here.
[3]: https://i.stack.imgur.com/3PKfk.png
Is there a way that I can export that as a .shp or .tif?
Any help would be wonderful and much appreciated!
Nvmd I figured it out.
What you have to do is use the Raster package to export a shapefile.
raster::shapefile(site2_ttops,"Products/site2plot_ttops.shp")
I am trying to overlay a shapefile representing the range of Coast Redwoods onto some other data I'm processing in geoviews. I can successfully plot the data using cartopy and matplotlib. GeoPandas reads the shapefile, but passing the GeoDataFrame or individual shapely polygons to gv.Shape (as in the geoviews user guide under "Shape") consistently results in
AttributeError: 'list' object has no attribute 'xy'
I am not sure whether the problem is in Shapely or in Geoviews. I suspect geoviews because geopandas is able to reproject and plot the polygons.
I've put up a notebook demonstrating the problem and providing the shapefile.
Any help or ideas much appreciated.
I was having the same issue, then i went ahead and converted my GeoDataFrame to EPSG:4326 as follows:
projected_df = original_df.to_crs('EPSG:4326')
Originally I was in EPSG:4269 (Albers Equal Area) and thought adding that to an Albers Equal Area projection would work but I think you need to start your data with EPSG:4326 and then work with projections with Geoviews.
Let me know if that does the trick.
I would like to use ggmap to plot several data points on top of a koppen-geiger climate map.
The kopper-geiger data and GIS/KMZ maps can be downloaded here:
http://koeppen-geiger.vu-wien.ac.at/present.htm
I've managed to have a code to plot the points on regular maps, obtained through the get_map function but I fail to use other maps such as koppen-geiger.
Any help will be appreaciated!
Your basic problem is that the map you are attmepting to use is an image file that is not georeferenced. So unless you want to go through the unnecessary and probably time consuming process of georeferencing this image yourself, you will be better taking an alternative approach. There are perhaps a few ways to do this. But, unless you have very few data points to overlay on the map which you can place manually using the lat-long grid of the image, then the least painful method will certainly be to redraw the map yourself using the shapefile.
This is not the right place to give you an introductory lesson on GIS, but the basic steps are to
Download shapefile (which is available at the same website as the image you linked)
Project map to desired coordinate system
Plot map, coloring by climate class
Color the ocean layer
Add labels, legend, and graticule, as desired
Overplot with your own climate data, and legend for these.
If you are unsure how to approach any of these steps, then take an introductory course on GIS, and search the Web for instructional materials. You may find this resource useful.
https://cran.r-project.org/doc/contrib/intro-spatial-rl.pdf
I have a scanned map from which i would like to extract the data into form of Long Lat and the corresponding value. Can anyone please tell me about how i can extract the data from the map. Is there any packages in R that would enable me to extract data from the scanned map. Unfortunately, i cannot find the person who made this map.
Thanks you very much for your time and help.
Take a look at OCR. I doubt you'll find anything for R, since R is primarily a statistical programming language.
You're better off with something like opencv
Once you find the appropriate OCR package, you will need to identify the x and y positions of your characters which you can then use to classify them as being on the x or y axis of your map.
This is not trivial, but good luck
Try this:
Read in the image file using the raster package
Use the locator() function to click on all the lat-long intersection points.
Use the locator data plus the lat-long data to create a table of lat-long to raster x-y coordinates
Fit a radial (x,y)->(r,theta) transformation to the data. You'll be assuming the projected latitude lines are circular which they seem to be very close to but not exact from some overlaying I tried earlier.
To sample from your image at a lat-long point, invert the transformation.
The next hard problem is trying to get from an image sample to the value of the thing being mapped. Maybe take a 5x5 grid of pixels and average, leaving out any gray pixels. Its even harder than that because some of the colours look like they are made from combining pixels of two different colours to make a new shade. Is this the best image you have?
I'm wondering what top-secret information has been blanked out from the top left corner. If it did say what the projection was that would help enormously.
Note you may be able to do a lot of the process online with mapwarper:
http://mapwarper.net
but I'm not sure if it can handle your map's projection.
I am new to GIS and I am trying to deploy my own off-line map server.
I have found very interesting open source tools like: geoserver.
I have downloaded OpenStreetMap data from geofabrik.de
In the packages I downloaded from geofabrik we find different layers with diffrent information: landuse, natural, places, railways ... but not the base map i.e: the geographic map with country border and no other information.
My question is:
How can I get (download) this base map layer in order to use it off-line?
Thanks for any help.
I had exactly the same project recently. I tried several world maps (CloudMate, NaturalEarth) to put under geofabrik extractions. Most of them didn't have enough resolution to display properly on higher zoom levels.
Finally, I found ThinkGeo extractions. It contains a "complete world landmass polygons" layer, which is good enough for a background layer on any zoom levels. It turned out that ThinkGeo extractions for separate countries contain country borders and have higher quality than geofabrik. (I experienced missing objects with geofabrik.)
So I came up a solution displaying the landmass layer, and some of the countries depending on the focus of the project.
I'd recommend you to try ThinkGeo. They do weekly update on data.