|
/* |
|
|
|
Copyright 2019 Esri |
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
|
you may not use this file except in compliance with the License. |
|
You may obtain a copy of the License at |
|
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
Unless required by applicable law or agreed to in writing, software |
|
distributed under the License is distributed on an "AS IS" BASIS, |
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
|
See the License for the specific language governing permissions and |
|
limitations under the License. |
|
|
|
*/ |
|
using ArcGIS.Core.Data; |
|
using ArcGIS.Desktop.Framework.Dialogs; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Collections.ObjectModel; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
|
|
namespace LayoutMapSeries.LayoutSettings |
|
{ |
|
public class MapSeriesDefinition |
|
{ |
|
public string FeatureClassName { get; set; } |
|
|
|
public IList<MapSeriesItem> MapSeriesItems = new List<MapSeriesItem>(); |
|
|
|
public void LoadFromFeatureClass(string layoutName, FeatureClass featureClass, string fieldList) |
|
{ |
|
MapSeriesItems.Clear(); |
|
var oidName = featureClass.GetDefinition().GetObjectIDField(); |
|
QueryFilter getQf = new QueryFilter |
|
{ |
|
SubFields = $@"{oidName},{fieldList}" |
|
}; |
|
var fields = fieldList.Split(new char []{ ',' }); |
|
if (fields.Length < 2) |
|
{ |
|
throw new Exception($@"List of fields {fieldList} needs to contain at least ID and Name"); |
|
} |
|
// For Selecting all matching entries. |
|
using (var rowCursor = featureClass.Search(getQf)) |
|
{ |
|
var oidIdx = rowCursor.FindField(oidName); |
|
var idIdx = rowCursor.FindField(fields[0]); |
|
var nameIdx = rowCursor.FindField(fields[1]); |
|
while (rowCursor.MoveNext()) |
|
{ |
|
using (var row = rowCursor.Current) |
|
{ |
|
var oid = Convert.ToInt64(row[oidIdx]); |
|
var id = Convert.ToInt32(row[idIdx]); |
|
var name = row[nameIdx].ToString(); |
|
if (string.IsNullOrEmpty(layoutName)) MessageBox.Show("test"); |
|
MapSeriesItems.Add(new MapSeriesItem { Oid = oid, Id = id, Name = name, LayoutName = layoutName }); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
public class MapSeriesItem |
|
{ |
|
public long Oid { get; set; } |
|
public int Id { get; set; } |
|
public string Name { get; set; } |
|
public string LayoutName { get; set; } |
|
} |
|
} |