У меня есть сеть дорог с некоторыми обвисшими узлами и некоторыми зацикленными дорогами. Я удалил болтающиеся дороги, и теперь я также хочу удалить зацикленные дороги. Может ли кто-нибудь сказать мне мотыгу, могу ли я это сделать. Заранее спасибо (:Извлечение автодорожной сети в ArcGIS
-1
A
ответ
0
1) Нахождение петель в сети автомобильных дорог: Для дорог, которые образуют 3/4 петли используют формулу извилина (расстояние между концами линии/длина). Формула Питон:
!Shp_lngth!/math.pow(math.pow(!X_Start! - !X_End! , 2) + math.pow(!Y_Start! - !Y_End!, 2), 0.5) > 2
Для петель, которые только в конце дороги (как Тупик луковиц) использовать инструмент Создать маршрут и найти дороги со значениями MMonotonicity, которые 4 или выше.
2) Нахождение Висячие Узлы в дорожной сети: Используйте этот код
using System;
using System.Collections.Generic;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.EditorExt;
namespace KalkulatorAddin
{
public class TestButton : ESRI.ArcGIS.Desktop.AddIns.Button
{
public TestButton()
{
}
protected override void OnClick()
{
try
{
Test();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
protected override void OnUpdate()
{
}
public void Test()
{
var fSel = ArcMap.Document.FocusMap.get_Layer(0) as IFeatureSelection;
fSel.Clear();
var dangleOids = GetDangleOids();
if (dangleOids.Count > 0)
{
var oidarray = dangleOids.ToArray();
fSel.SelectionSet.AddList(dangleOids.Count, ref oidarray[0]);
}
((IActiveView)ArcMap.Document.FocusMap).Refresh();
}
private List<int> GetDangleOids()
{
UID topoUiD = new UID();
topoUiD.Value = "esriEditorExt.TopologyExtension";
var topoExt = ArcMap.Application.FindExtensionByCLSID(topoUiD) as ITopologyExtension;
var mapTopology = topoExt.CurrentTopology as IMapTopology;
if (mapTopology == null)
throw new Exception("map topology not found");
//assume just one class in the map topology
var extent = ((IGeoDataset)mapTopology.get_Class(0)).Extent;
mapTopology.Cache.Build(extent, false);
var dangleOids = new List<int>();
var nodes = mapTopology.Cache.Nodes;
nodes.Reset();
ITopologyNode node;
while ((node = nodes.Next()) != null)
{
// sometimes degree is referred to as valence
if (node.Degree == 1)
{
var parents = node.Parents;
parents.Reset();
int oid = parents.Next().m_FID;
if (!dangleOids.Contains(oid))
dangleOids.Add(oid);
}
}
return dangleOids;
}
}
}
Смежные вопросы
- 1. Извлечение значений из растра ArcGIS 10.x
- 2. Параллельный извлечение питона с помощью маски ArcGIS
- 3. Извлечение веса сети в кофе
- 4. Извлечение файлов gzip по сети
- 5. ARCGIS апите dojo.require расслоения плотного сделать много сети просит
- 6. Извлечение сетевого имени пользователя из сети Windows
- 7. Извлечение топологии из дорожной сети (.NET)
- 8. Извлечение IP-адресов, выделенных по беспроводной сети
- 9. Извлечение XML из сети с помощью C#
- 10. Python в среде ArcGIS
- 11. Использование «MakeRouteEventLayer» в ArcGIS
- 12. Расширение ArcGIS
- 13. Arcgis объяснил?
- 14. ArcGIS GeoDataBase
- 15. AngularJS + ArcGIS
- 16. Могу ли я запустить javascript-код arcgis в Arcgis Desktop
- 17. Извлечение текущего местоположения в сети в Windows Phone 7
- 18. Извлечение максимального значения в столбец GridView в тесте производительности сети
- 19. Threading и ArcGIS
- 20. ARCGIS: открытая функция в TOC
- 21. Функции кластеризации в ArcGIS JS
- 22. DashDB Интеграция в ArcGIS Online
- 23. Многопоточность в ArcGIS с Python
- 24. applyEdits сбой в ArcGIS JSAPI
- 25. как использовать ArcGis в javafx
- 26. Динамическое раскрашивание страны в ArcGIS
- 27. Пагинация в Arcgis wfs request
- 28. Преобразование ArcGIS UTM в WGS84
- 29. Может ли работать с ArcGIS на Android без сервера ArcGIS?
- 30. Смещение округления ArcGIS - FME