标签: shapefile

刻面ggplot的不同图例和填充颜色?

很抱歉没有包含我的问题的任何示例数据.我找不到轻松生成示例形状文件的方法.希望有经验的用户ggplot可以从下面的描述中看到我想做的事情.

我有:

  • 一个data.frameX与约样地信息(plotid,var1,var2,var3,var4,...)

  • Y具有样本图的空间信息的多边形shapefile

导入shapefile Y(with maptools)和fortifying as data.frame Z(ggplot2)可以正常工作.melt荷兰国际集团XX_melted作品同样精致.merge-ing ZX_meltedmapdf作品为好.

这意味着,现在我们有一个data.frame长形式的空间信息和var1,var2,var3,...

现在我想绘制这样的数据框:

pl1 <- ggplot(mapdf,aes(long,lat),group=group)
pl1 <- pl1 + geom_polygon(aes(group=group,fill=value),colour="black")
pl1 <- pl1 + facet_grid(variable ~ .)
pl1 <- pl1 + coord_equal(ratio = 1)
pl1
Run Code Online (Sandbox Code Playgroud)

结果是一个很好的情节,每个变量有一个面板.面板的地图是相同的,但填充颜色随变量的值而变化.到目前为止,一切都像魅力......有一个问题: …

r spatial shapefile ggplot2

16
推荐指数
2
解决办法
6584
查看次数

裁剪R中使用shape文件栅格,但保持shape文件的几何

我使用{光栅}夹(或作物)的基础上的不规则shape文件(亚马逊生物群落),但输出总是具有矩形程度的栅格.不过,我需要在shape文件完全相同的几何形状的输出.有小费吗?干杯.

library(raster)
library(rgdal)

myshp <- readOGR("Amazon.shp", layer="Amazon")
e <- extent(myshp)
myraster <- raster("Temperature.tif")
myraster.crop <- crop(myraster, e, snap="out", filename="myoutput.tif")
Run Code Online (Sandbox Code Playgroud)

r crop raster shapefile clip

16
推荐指数
2
解决办法
2万
查看次数

Python:如何用加拿大的shapefile创建一个等值区域图?

我的目标是在Python中创建加拿大的等值线图.假设我有一个字典,其中的值指的是每个加拿大省/地区:

myvalues={'Alberta': 1.0,
 'British Columbia': 2.0,
 'Manitoba': 3.0,
 'New Brunswick': 4.0,
 'Newfoundland and Labrador': 5.0,
 'Northwest Territories': 6.0,
 'Nova Scotia': 7.0,
 'Nunavut': 8.0,
 'Ontario': 9.0,
 'Prince Edward Island': 10.0,
 'Quebec': 11.0,
 'Saskatchewan': 12.0,
 'Yukon': 13.0}
Run Code Online (Sandbox Code Playgroud)

现在我想myvalues使用连续的色彩图(例如,红色阴影)基于相应的值为每个省着色.怎么做?

到目前为止,我只能在matplotlib中绘制加拿大各省/地区,但它们的形状呈现出独特的颜色,我不知道如何根据数字改变它myvalues(也许我需要玩,patches但我不知道怎么样).

您可以在这里找到shapefile:http://www.filedropper.com/canadm1_1

这是我迄今为止的代码:

import shapefile
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
#   -- input --
sf = shapefile.Reader("myfolder\CAN_adm1.shp")
recs    = sf.records()
shapes …
Run Code Online (Sandbox Code Playgroud)

python patch matplotlib shapefile choropleth

15
推荐指数
1
解决办法
6521
查看次数

哪个C++库可供ESRI shapefile选择?

有没有人有从C++ 处理(阅读)ESRI shapefile(http://en.wikipedia.org/wiki/Shapefile)的经验?

我找到了至少2个开源库:ShapeLib C库(http://shapelib.maptools.org/)和OGR(http://www.gdal.org/ogr/).哪一个更好?有人用过其中一个吗?体验怎么样?

c++ shapefile gdal

14
推荐指数
2
解决办法
1万
查看次数

将多边形添加到R闪亮的传单地图

如何从全局管理区域添加多边形,以便可以单击它们.

docs我试过的简单方法描述的是

adm <- getData('GADM', country='UKR', level=1)
leaflet() %>% addTiles() %>% addPolygons(data=adm, weight = 3, fillColor = col)
Run Code Online (Sandbox Code Playgroud)

但想象一下,我想要一个将在稍后进行onClick操作的传单地图.

基于SuperZip,我需要有类似的东西

  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
     map$addPolygon(...) 
  })
Run Code Online (Sandbox Code Playgroud)

但是,没有addPolygon方法,我很困惑它将如何工作SpartialPolygons.

我也试过转换geoJSON,类似于https://ropensci.org/blog/2013/10/23/style-geojson-polygon/或这个SO问题,但正在做

  polys <- fromJSON(<json data file>)
  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
    map$geoJson(polys)
  })
Run Code Online (Sandbox Code Playgroud)

给我一个错误

Error in func() : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

有办法吗?或者我做错了什么?

r shapefile leaflet shiny

14
推荐指数
1
解决办法
9888
查看次数

从shape转换为topojson的问题

我想墨西哥城市的shape文件转换成topojson和使用d3.js使用本教程中显示它http://bost.ocks.org/mike/map/#converting-data.我设法转换它但我无法显示它.任何帮助将不胜感激.

这是我目前的工作流程:

1)下载并解压缩shapefile

wget http://mapserver.inegi.org.mx/MGN/mgm2010v5_0a.zip 
unzip mgm2010v5_0a.zip 
Run Code Online (Sandbox Code Playgroud)

2)转换为JSON,重新投影到lat-long并对shapefile进行子集化

ogr2ogr  -f GeoJSON -t_srs EPSG:4326 -where "CVE_ENT IN ('09')" df.json Municipios_2010_5A.shp
Run Code Online (Sandbox Code Playgroud)

3)转换为topojson

topojson --id-property OID -p name=OID -p name -o df2.json df.json 
Run Code Online (Sandbox Code Playgroud)

4)并创建HTML代码

<!DOCTYPE html>
<meta charset="utf-8">
<style>

/* CSS goes here. */

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>

var width = 960,
height = 1160;

var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);

 d3.json("df2.json", function(error, df2) {
 svg.append("path")
  .datum(topojson.feature(df2, df2.objects.df))
  .attr("d", d3.geo.path().projection(d3.geo.mercator()));
 });

 </script>
Run Code Online (Sandbox Code Playgroud)

如果我运行html我只是得到一个空白页面.关于我可能做错什么的任何想法?

shapefile gdal geojson d3.js topojson

12
推荐指数
1
解决办法
2265
查看次数

使用readOGR和readShapePoly读取形状文件

我已经readShapePolymaptools包中读取了shapefile ,但无法读取同一个文件readOGR.我希望有人可以帮助我阅读shapefile readOGR.

orcounty.shp从这里下载了文件:http://geography.uoregon.edu/geogr/topics/maps.htm

我也下载了相关文件:orcounty.shx,orcounty.sbx,orcounty.sbn,和orcounty.dbf,并把所有五个文件的文件夹中:c:/users/mark w miller/gis_in_R/shapefile_example/

以下代码读取shapefile并显示一些属性:

library(maptools)

setwd('c:/users/mark w miller/gis_in_R/shapefile_example/')

# Oregon county census data (polygons)
orcounty.poly <- readShapePoly('orcounty.shp', proj4string=CRS("+proj=longlat"))
orcounty.line <- readShapeLines('orcounty.shp', proj4string=CRS("+proj=longlat"))

# see projection
summary(orcounty.poly)

Object of class SpatialPolygonsDataFrame
Coordinates:
         min        max
x -124.55840 -116.46944
y   41.98779   46.23626
Is projected: FALSE 
proj4string : [+proj=longlat]
Data attributes:
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下代码读取相同的shapefile时,我收到一个错误:

library(rgdal)

# read shapefile
oregon.map <- readOGR(dsn="c:/users/mark …
Run Code Online (Sandbox Code Playgroud)

r shapefile rgdal

12
推荐指数
1
解决办法
2万
查看次数

R中的相交点和多边形

我在R中使用shapefile ,一个是point.shp,另一个是polygon.shp.现在,我想将点与多边形相交,这意味着多边形中的所有值都应该附加到point.shp的表中.

我在包sp中尝试了overlay()和spRbind,但没有做我期望他们做的事情.

谁能给我一个提示?

r spatial shapefile intersect

11
推荐指数
2
解决办法
1万
查看次数

随机错误:尝试读取或写入受保护的内存

我们有一个使用WCF服务的C#.Net应用程序.该应用程序部署在Windows服务应用程序下的生产服务器中.该模块的一部分负责创建形状文件((*.shp,*.dbf),用于工作人员今天工作的较小区域,并将其发送到PDA.

要编写形状文件,我们使用第三方DLL NetTopologySuite

GisSharpBlog.NetTopologySuite.IO.ShapefileWriter
Run Code Online (Sandbox Code Playgroud)

这也是在C#中.(我不确定它引用的任何dll是否使用非托管代码.) 系统可能会工作一段时间再说一个星期.突然间我们得到一个例外说法

Attempted to read or write protected memory. 
This is often an indication that other memory is corrupt.
Run Code Online (Sandbox Code Playgroud)

从Write方法,我们将几何集合写入形状文件.

sfw.Write(FileName, new GeometryCollection(gc.ToArray()));
Run Code Online (Sandbox Code Playgroud)

(GeometryCollection也来自第三方dll,GeoAPI.dll)

此错误会导致整个服务失效并使其无法正常运行.然后我们只是重新启动服务并尝试再次运行相同的数据,它将再工作一周,直到它再次崩溃.它只发生在生产中和随机时间.我们无法找到问题的原因.

许多论坛都认为这可能是因为某些非托管代码中的内存泄漏.但我们找不到哪一个.

我们也准备重写创建新形状文件的部分.请帮我解决这个问题.如果需要更多详细信息,请与我们联系.提前致谢.

c# memory-leaks shapefile geoapi sharpmap

11
推荐指数
1
解决办法
3624
查看次数

从数据框中的点创建shapefile

在阅读了很多帖子和网站后,我找不到如何从我的lon-lat数据表创建多边形shapefile.我想创建像这样的地图. 在此输入图像描述

我的csv数据文件包含地中海1000点的经度,纬度和属性.我想按属性创建shapefile子集化数据,然后用ggplot2绘制geom_polygon,填充属性.

我试过这个R代码(来自/sf/answers/1792571371/)但没有成功

library("sp")
library("rgdal")

clust1 <- subset(datos, datos$cluster == 1)
coords<-cbind(clust1$longitud,clust1$latitud)

sp_poly <- SpatialPolygons(list(Polygons(list(Polygon(coords)), ID=1)))

sp_poly_df <- SpatialPolygonsDataFrame(sp_poly, data=data.frame(ID=1))
writeOGR(sp_poly_df, "chull", layer="chull", driver="ESRI Shapefile")

ggplot() +  geom_polygon(data=sp_poly_df, aes(x=long, y=lat, group=group))
Run Code Online (Sandbox Code Playgroud)

这产生的输出显然不是shapefile/polygon

在此输入图像描述

plot(sp_poly_df) 给出这个:

在此输入图像描述

我是否需要先使用ggplot强化sp_poly_df以进行绘图?

如何创建shapefile或SpatialPolygon?我想将所有具有相同聚类属性的点合并,以映射数据集中的不同区域/多边形,然后使用聚类值填充多边形.也许这样,创建多边形/ shapefile,不是生成这种类型的地图的最佳方法.

也尝试了,geom_map但它不是我想要的:

ggplot() + 
  geom_point(data=datos, aes(x=longitud, y=latitud, color=id), 
                      alpha=1, na.rm=TRUE) + scale_size(range=c(1,12)) +
scale_color_identity() +
  labs(title= "med cluster", 
                x="Longitude", y= "Latitude") + coord_map()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此先感谢您的帮助

使用的数据:

> dput(dato)
structure(list(longitud = c(18.875, 19.125, 19.375, 18.375, 18.625,
18.875, 19.125, 19.375, 19.625, …
Run Code Online (Sandbox Code Playgroud)

r polygon spatial shapefile ggplot2

11
推荐指数
1
解决办法
1750
查看次数