我现在使用ESRI shapefile格式,我在更改/编辑数据库字段大小时遇到了一些问题.我创建了一个200长度/大小的字段,现在我希望它只有80长度/大小(空间和其他改进).
但是我不能再编辑字段大小了:(有人可以指出如何更改字段大小?
顺便说一下,我尝试过可以编辑字段大小的实用工具,例如DBF Explorer,但是当我在字符/文本字段上更改字段大小时,浮点数/数字字段上的数据会被删除:(
DBF Explorer
PS:ESRI数据库使用.dbf扩展,我认为它是DBASE III plus或DBASE IV格式
我们正在考虑使用ESRI的ArcGIS Engine编写具有某些GIS功能的应用程序.我们主要关注的GIS工具包功能包括:
该项目的初始目标相对有限,但未来可能会扩大 - 例如,进行一些包含地理空间数据的图像处理.
除了ESRI的ArcGIS Engine之外,我们还在考虑使用:
Intergraph似乎拥有大量的GIS软件产品,但目前尚不清楚它们是否销售了与ArcGIS Engine工具包相当的产品.
还有其他值得考虑的选择吗?关于已经提到的选项的见解或意见?
我有一个ESRI形状文件,其中包含大约150个连续地理区域(多边形)的库,它们共同构成一个地理区域.我还有一个包含60,000个事件的csv文件,每个事件都有一组唯一的x,y点坐标.csv文件中的每个事件都发生在shape文件中150个多边形中的一个(且只有一个)内,但我不知道与每个记录关联哪个多边形.因此,我需要编写一个算法,找出多边形的身份,其中每个事件发生在60,000个事件中.我需要编写的算法输出将使我能够随后计算统计数据,例如特定多边形(地理区域)内发生的特定类型事件的可能性.
(当然,形状文件不仅仅是一个文件.它是一个目录,包含8个文件扩展名的文件,包括.dbf,.prj,.qix,.sbn,.sbx,.shp,.xml和.shx .)
我没有ArcGIS许可证.我在http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api找到了文件地理数据库API,但我不确定它是否是正确的工具集,而且我也无法找到示例代码.
任何人都可以向我展示一些代码,用于查找哪些多边形(来自形状文件)中的每一个(来自外部数据源,如csv文件)都属于哪个?
此外,我需要指定我需要能够为每个事件的csv记录添加相关多边形的标识的特定代码.因此,仅仅绘制地图上的点以显示哪些多边形包含事件是不够的.我根本不需要可视化这些数据.相反,我需要的是能够将多边形id标记到csv文件中的每个事件记录,以便我可以进行后续的非直观的数值分析.
还将赞赏有关此主题的文章,教程和其他资源的链接.我想这是人们每天都在解决的一个问题,所以如果一个人知道如何找到它,就必须有一个既定的代码库.我每天都用Java编写代码,因此首选Java解决方案.但是,如果你有一个用不同语言编写的好代码示例,我可以从另一种语言中移植一些东西.
*编辑:*
我根据Spacedman的建议尝试了以下R代码,我收到以下错误消息:
> myCSV <- read.csv(file="myCSVFile.csv",head=TRUE,sep=",")
> pts = SpatialPoints(myCSV)
> ZipCodes = readShapeSpatial("path/myshapefile.shp")
> overlay(myCSV,ZipCodes)
Error in function (classes, fdef, mtable) : unable to find an inherited method for function "overlay", for signature "data.frame", "SpatialPolygonsDataFrame"
>
Run Code Online (Sandbox Code Playgroud)
请参阅下面的其他评论.
第二次编辑:
我最终使用的R代码是:
myCSV <- read.csv(file="myData.csv",head=TRUE,sep=",")
pts = SpatialPoints(myCSV)
ZipCodes = readShapeSpatial("myPath/ZipCodes.shp")
write.csv(ZipCodes$ZIPCODE[overlay(pts,ZipCodes)], "ZipMatches.csv", quote=FALSE, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
注意:我必须使用:
summary(ZipCodes)
Run Code Online (Sandbox Code Playgroud)
找到包含邮政编码编码的字段的名称.在我运行摘要(ZipCodes)之前,脚本只是输出每个邮政编码的索引而不是邮政编码本身.
我正在尝试在我们的本地服务器上使用 Shiny 来构建一个应用程序,允许用户上传包含 ESRI shapefile 和关联文件的 .zip 文件。Shiny 服务器的 fileInput 可以获取数据,并且当它这样做时,它会将其存储在临时目录和文件名中。该文件名似乎总是一个相当通用的“0”。如果我手动尝试解压缩文件“0”,它会起作用。但是,如果我尝试使用 R 函数 unz (我收集的应该可以工作)以编程方式执行此操作,则会失败,错误消息是它“无法打开 zip 文件“0”。我不知道为什么。任何人都可以帮忙吗?
这是代码:
shinyServer(function(input, output) {
mySHPdata <- reactive({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
print((inFile$datapath))
data<-read.table(unz(basename(inFile$datapath), "testme.shp"))
Run Code Online (Sandbox Code Playgroud)
必须将相关文件一一提取,因此这里我仅举例说明尝试打开其中一个文件。有人知道为什么这不起作用吗?
我尝试了以下过程来为 arcgis 设置 conda 环境。环境设置正确,系统提示我输入“activate esri101”来激活环境...
$ activate esri101
sh.exe": activate: command not found
Run Code Online (Sandbox Code Playgroud)
在从新手到专家的评分中,我的得分为十分之三。我尝试按照此处指定的方式设置路径,但无济于事。我不知道从这里到底该去哪里。
编辑:我今天再次重试,似乎有效
我使用的是 Esri Javascript API 4.5
当地图加载时,我从外部源获取点坐标,然后使用Graphic类将其绘制在地图上并PopupTemplate为该图形分配一个。
图形已成功绘制在地图上。但是为了查看弹出模板,我需要单击图形。
有没有办法在将图形添加到地图时触发图形的单击事件,以便自动显示弹出模板?
require([
"esri/PopupTemplate",
"esri/Graphic",
.
.
.
.
"dojo/domReady!"
],
function (
PopupTemplate, Graphic, ....) {
var point = {
type: "point",
x: <some x>,
y: <some y>
};
var symbol = {
type: "picture-marker",
url: "/euf/assets/nl/images/red-pin.png",
width: "30px",
height: "30px"
};
var template = new PopupTemplate({
title: "New Title",
content: "New Content"
});
var graphic = new Graphic({
geometry: point,
symbol: symbol,
popupTemplate: template
}); …Run Code Online (Sandbox Code Playgroud) 我们的部门有两位新的GIS程序员/分析师(编程和ArcObjects的新手),我觉得我没有足够的资格或没有时间教他们.所以我正在寻找入门级书籍/教程供他们作为参考.
我可以找到用于开发ArcMap扩展的唯一书籍是为VBA编写的.
除了您从Redlands的培训中获得的ESRI课程书籍之外,是否有人知道学习在.Net中对ArcObjects进行编码的良好来源?
谢谢
我是ArcGIS的新手.
我想直接在地图上画一些点和一些文字.
类似下面的东西.但它只是显示地图而没有画任何东西.
有人可以帮我解决这个问题吗?
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Draw point and text</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.1/js/dojo/dijit/themes/tundra/tundra.css">
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis?v=3.1"></script>
<script type="text/javascript">
dojo.require("esri.map");
dojo.require("esri.layers.agsdynamic");
var map;
var layer;
var mapUrl;
var defaultSymbol;
function Init()
{
map = new esri.Map("mapDiv");
mapUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer";
//mapUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer";
layer = new esri.layers.ArcGISDynamicMapServiceLayer(mapUrl);
map.addLayer(layer);
defaultSymbol = new esri.symbol.SimpleMarkerSymbol(); // point
defaultSymbol.setColor(new dojo.Color([255, 0, 0]));
addPoint(10, 10);
addText(10, 20, "Text");
}
function addPoint(x, y)
{
var pt = new esri.geometry.Point(x, y, map.spatialReference); …Run Code Online (Sandbox Code Playgroud) 我有一个页面在第一次加载页面时使用ArcGIS Javascript,页面上的地图加载就好了.我有一个下拉框,控制在地图上显示的内容和附加到该下拉框的ajax事件处理程序,当在该下拉框功能中选择了其他选项时
function ajaxOnComplete() { }
Run Code Online (Sandbox Code Playgroud)
被叫.我在该函数中如何要求ArcGIS Javascript重新加载其静态地图?
esri ×10
arcgis ×4
gis ×3
javascript ×3
r ×2
.net ×1
arcmap ×1
arcobjects ×1
dbase ×1
dbf ×1
field ×1
geocoding ×1
geolocation ×1
geospatial ×1
opengis ×1
python ×1
shapefile ×1
shiny ×1
size ×1
virtualenv ×1
zip ×1