Questions tagged «enterprise-geodatabase»

使用此标记可解决有关ArcGIS for Server的企业级地理数据库(早期版本中为ArcSDE)组件的问题。


8
使用ArcSDE进行版本控制时,可以取消或拒绝发布的编辑吗?
我正在使用ArcGIS 9.3.1,并尝试使用已经注册为版本控制的SDE地理数据库(具有一个面要素类)。我是版本控制的新手,但仍在尝试弄清其中的一些基本功能。到目前为止,我还无法发现将某些修改发布到父版本后是否可以“取消”或“拒绝”某些修改。 例如,假设我们有三个版本:在注册为版本时创建的原始SDE.DEFAULT,默认名称为SDE.QA(用于质量保证)的子版本以及名为SDE的QA的子版本。 .Edit1(首先进行编辑的位置)。如果编辑了SDE.Edit1的某些功能(例如,为了简单起见,假设添加了一个多边形,然后删除了一个多边形),然后将SDE.Edit1与SDE.QA进行了协调,然后发布到SDE.QA,有什么办法以后可以撤消此更改?跟进这个问题,是否可以仅拒绝某些更改?例如,接受添加第一个多边形,但拒绝删除第二个多边形? 据我所知,一旦将编辑内容发布到父版本中,所有这些更改现在都是父版本的“永久”(由于缺少更好的用词)部分。我知道以下事实:所有这些更改都记录在两个表中,即“ ADD”和“ DELETE”表(通常称为“ delta”表),实际上并没有更改原始FC本身。我考虑过研究手动更改这些增量表,但是我发现有足够的人警告说这可能不是正确的解决方案。 也许是我对版本控制的理解需要一些工作,但是一旦发布更改,我似乎无法找到拒绝更改或撤消更改的方法。我觉得这很奇怪,因为这意味着无法撤消包含错误的帖子。我似乎也找不到找到这些版本沿袭的方法(即哪个版本是哪个父版本的子版本)。当我在讨论这个话题时,如果有人知道任何特别有用的ArcSDE参考资料(链接,文章,书籍等),可能有助于我对ArcSDE的理解(并可能回答其中的一些问题),将不胜感激。 ! 尽管到目前为止的答案是有帮助的(感谢您的链接),但我仍然找不到问题核心的答案。再次,也许这是我自己对情况的误解。这是我想知道的: 将帖子从子版本发布到父版本后,您可以将其撤消吗?在这种情况下,父级可以是SDE.DEFAULT版本,但不一定是。更好的是,我想知道发布后是否可以撤消发布的一部分(例如,对多边形进行一次编辑)?我也想知道是否可以在不需要检测到任何冲突的情况下完成此操作。 我在任何地方都找不到对这个问题的明确答案(即“是”或“否”)的事实,这使我觉得我缺少有关ArcSDE版本控制的重要信息。我也希望避免手动操作A和D表。

5
在ArcGIS 10.1中不再需要ArcSDE吗?
由于无法找到ArcSDE 10.1的安装后向导,以及无法使用命令行工具在SDE数据库上启动SDE服务而感到沮丧,我发现我能够访问数据库并复制/粘贴/添加功能/删除功能/等 通过直接连接到我们的SQL Server 2012计算机。这是没有ArcSDE运行的。 所以...问题是,如果我可以通过桌面工具管理数据库,为什么要尝试运行SDE服务就麻烦了?我什至能够创建企业级地理数据库并验证是否已创建了所有必需的业务表。我什至已经使用直接连接在ArcGIS Server 10.1中重新创建了所有地图服务,并且Web编辑工作正常。 也许我在想什么... 更新: 如“地理数据库的新增功能”主题中所述: “访问企业级地理数据库的推荐方法是直接从ArcGIS客户端连接。如果仅使用直接连接到地理数据库,则不必安装ArcSDE应用程序服务器。” 但是,如果您需要在ArcSDE系统表中编辑设置,则仍应安装应用程序服务器随附的命令行工具。我不认为从技术上直接支持通过SQL直接编辑系统表。

2
哪种地理数据库类型最适合开源和ESRI使用?
主要问题:是否有一个地理数据库类型可以与ESRI和开源产品无缝配合使用? 详细信息:我的公司目前以各种矢量和栅格文件格式传递地理数据,并且组织不明确。大多数处理都是使用开源工具完成的,但是一些客户要求我们以ESRI Map服务格式托管数据。我们已经有一个承载这些服务的ArcGIS Server实例,但是在将结果转储到ESRI arcsde地理数据库之前,我们仍然使用开源工具在上游进行处理。据我所知,ogr / gdal从arcsde地理数据库读取/写入的能力有限,但不足以使我可以将所有数据合理地存储在arcsde地理数据库中,并期望我们的处理工具能够使用arcsde地理数据库作为公司的主要数据存储。我错了吗?如果我切换到开源地理数据库(例如postgis),我们的处理工具可以正常工作,但我认为我不能使用postgis数据库作为托管ESRI服务的数据存储。我错了吗?是否有可以无缝服务开源和ESRI的地理数据库类型?如果不是,通常的做法是维护并行地理数据库,一个用于开放源代码,一个用于ESRI? 额外的皱纹:我得到的答案是使用PostgreSQL / PostGIS。唯一可能的问题是,我想将此数据库托管在Amazon Web Services(AWS)上,并且在可能的情况下,我想使用Amazon Relational Database Service(RDS)来最小化我们的数据库管理开销(备份,负载平衡)。等)。但是,RDS当前仅支持MySQL,Oracle和SQL Server作为数据库引擎。我在想,如果RDS开始支持PostgreSQL,那将是理想的方案,但是要仔细检查一下,PostgreSQL是我对基于ArcGIS + gdal / ogr的开源互操作性正确的唯一选择吗?如果是这样,我可能会在AWS上创建一个PostgreSQL数据库,那么我只需要花费更多的资源来管理它。

7
将数据从ArcSDE迁移到PostGIS?
有人建议我再问一次这个问题,但措辞可能与如何将多个shapefile批量加载到PostGIS中不同。 我是Postgis和sql的新手,但我想将Postgis用作ArcSDE的从属设备(暂时)。因此,我所需要的是对每晚如何将ArcSDE数据批量上传到PostGIS的帮助。 我可以生成一个Python脚本以每晚将ArcSDE数据导出到SHP,但是我不确定如何将导出的SHP文件批量上传到PostGIS,将postgis中已经存在的文件作为自动化任务覆盖(批处理文件,我猜是)。 我的宏伟计划是及时用PostGIS,QGIS和GeoServer或MapServer替换ArcSDE / ArcGIS。

3
解决ArcObjects的IFeatureClass.Search(仅在具有直接连接的SDE上)中的内存泄漏?
ESRI支持人员说,他们已重现了该问题,并已打开一个错误报告(NIM070156)。 我已确定,有内存泄漏(在非托管堆内存)时发生在工具我的.NET / C#ArcMap中附加执行空间查询(返回ICursor从IFeatureClass.Search与ISpatialFilter查询过滤器)。不再需要所有COM对象时,它们将被释放(使用Marshal.FinalReleaseCOMObject)。 为了确定这一点,我首先建立了一个带有ArcMap.exe的“专用字节”,“虚拟字节”和“工作集”计数器的PerfMon会话,并注意到,随着执行查询的工具的每次使用,这三者均稳步增加(每次迭代大约增加 500KB) 。至关重要的是,只有在使用直接连接(ST_Geometry存储,Oracle 11g客户端和服务器)对SDE上的要素类执行此操作时,才会发生这种情况。使用文件地理数据库以及连接到使用应用程序连接的较旧SDE实例时,计数器保持不变。 然后,我使用LeakDiag和LDGrapher(在此博客文章中提供了一些指导)并三次登录Windows Heap Allocator:第一次加载ArcMap并选择工具对其进行初始化之后,运行了数十次该工具,然后运行了它几十次。 以下是LDGrapher的默认视图(总大小)中显示的结果: 这是红线的调用堆栈: 如您所见SgsShapeFindRelation2,sg.dll中的功能似乎是导致内存泄漏的原因。 据我了解,sg.dll是ArcObjects使用的核心几何库,SgsShapeFindRelation2大概是在应用空间过滤器的地方。 在我做其他事情之前,我只是想看看是否有人遇到了这个问题(或类似的问题),以及他们是否有能力解决这个问题。另外,仅通过直接连接发生这种情况的原因可能是什么?这听起来像是ArcObjects中的错误,配置问题还是编程问题? 这是产生此行为的方法的最低工作版本: private string GetValueAtPoint(IPoint pPoint, IFeatureClass pFeatureClass, string pFieldName) { string results = ""; ISpatialFilter pSpatialFilter = null; ICursor pCursor = null; IRow pRow = null; try { pSpatialFilter = new SpatialFilterClass(); pSpatialFilter.Geometry = …

3
使用ArcPy在ArcGIS Desktop中按点选择ArcSDE多边形?
我一直认为我必须缺少某些东西,但是ArcGIS 10中似乎没有工具可以通过ArcPy从点(X,Y)位置的图层中选择要素(特别是多边形)。这种工具的参数只是图层名称和XY位置。 目前,我通过创建包含该点的点要素类并对其执行SelectLayerByLocation来解决此问题。但是,当面要素类在Oracle中(可通过ArcSDE 9.x访问)并且包含350万个面时,我认为一两秒钟(用更少的代码)将花费5分钟以上的时间进行选择更合适。要素类具有空间索引,我尝试使用arcpy.env.extent(SelectLayerByLocation似乎忽略了它)来限制访问的地理区域,但性能仍然很差。 有没有使用ArcGIS Desktop 10和ArcPy进行此操作的更快方法?

2
使用ArcPy有效选择相关记录?
下面是我用来复制ArcMap中“相关表”按钮的代码。在ArcMap中,该按钮基于对另一个相关要素类或表中要素的选择来选择一个要素类或表中的要素。 在ArcMap中,我可以使用该按钮在几秒钟内将我的选择“推送”到相关表。我找不到arcpy内置的任何可复制按钮的内容,因此我使用了一些嵌套循环来完成相同的任务。 下面的代码遍历“处理”表。对于每种处理,它都会遍历“树”列表。当在处理的ID字段和树的ID字段中找到匹配项时,将在树层中进行选择。找到治疗的匹配项后,该代码将不会继续在树层中搜索其他匹配项。它返回到处理表,选择下一个处理,然后再次搜索树要素类。 该代码本身可以正常工作,但是非常缓慢。在这种情况下,“治疗表”具有16,000条记录。“树”要素类具有60,000条记录。 当ESRI将选择从一个表推到另一个表时,还有另一种更有效的方法来重新创建ESRI所做的事情吗?我应该为表创建索引吗?注意:此数据存储在SDE中。 # Create search cursor to loop through the treatments treatments = arcpy.SearchCursor(treatment_tv) treatment_field = "Facility_ID" for treatment in treatments: #Get ID of treatment treatment_ID = treatment.getValue(treatment_field) # Create search cursor for looping through the trees trees = arcpy.SearchCursor(tree_fl) tree_field = "FACILITYID" for tree in trees: …


2
相对于简单的ArcSDE,将ArcGIS与PostgreSQL结合使用有什么好处?
我了解到,为了从ArcGIS空间数据类型(ST_GEOMETRY,版本化的地理数据库等)中受益,需要安装ArcSDE-并随10.1客户端一起自动安装(两层客户端>> DBMS,请参见此处)。 但是,我仍在尝试找出将Esri前端连接到PostgreSQL(或Oracle)的好处。它纯粹是后端的好处,例如可伸缩性/性能/冗余/ DBAability,还是PostgreSQL / PostGIS设置提供了额外的前端功能?Esri 帮助似乎没有详尽说明 仅供参考,我是一个数据库新手,他正在设计GIS论文,目的是说明为什么Postgresql / PostGIS / QGIS比ArcGIS /任何数据库更具可伸缩性/灵活(和便宜),所以还必须考虑上述情况,我可以付诸实施。最后一点上的任何链接,尤其是有关工作流的链接(例如,没有大量的shapefile会使所有内容杂乱无章),都是最受欢迎的。d。

2
从ArcSDE(SQL Server)迁移到PostGIS(PostgreSQL)
我们已经在ArcSDE数据库(通过SQL Server)中获得了我们公司的所有地理空间信息: 点(天线的位置), 线(高程,河流), 多边形(保护区,房屋)。 我们通过ArcGIS Desktop和ArcGIS Server使用这些数据。 我们正计划将所有信息迁移到PostGIS(通过PostgreSQL),并想知道是否有任何文档/网页要遵循一些步骤,并牢记一些注意事项。导出数据模型非常困难吗? 我一直在进行调查,并正在使用GDAL-Python脚本进行一些测试,以从SDE读取并写入PostGIS,但是任何经验都将不胜感激。 顺便说一句,我们计划使用ArcGIS Desktop(以及QGIS)和GeoServer使用来自PostGIS的信息。 提前非常感谢您。


1
为什么在小型数据集上进行简单联接会严重降低ArcMap的速度?
ArcGIS 9.3.1,ArcInfo。我有一些小型文件地理数据库和SDE要素类(每个实体有几千条记录,每列50列),它们是属性联接的对象。连接后,地图的绘制每次都会从亚秒级减慢到几秒,有时甚至更长。添加一些定义查询,这些查询引用了联接中的字段,是时候重绘时喝杯咖啡了。有什么想法为什么会这样?其他人曾经经历过吗?


6
在ArcMap中确定真实的曲线/弧?
在ArcMap中创建圆的唯一好方法是使用真实的圆弧(复合曲线),但是由于兼容性问题,我需要将圆弧转换为顶点(密集化)。我需要有关地理数据库和SDO_geometry(arcsde)的信息 是的,有办法。我用: UPDATE layer1 a SET arctype = 'compound' WHERE has_compound_curves(a.shape) <> 0; 然后使用ET Geotools逐层压实。 但是在Oracle或ArcMap中应该有更简单的方法来做到这一点,而我只是想浓缩具有真正弧线的要素。我不希望直线上有任何不必要的顶点,等等。 如何在ArcMap中标识真实的弧,以及如何尽可能快速,轻松地对其进行密化? 与Oracle SQL相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.