| 97 | {{{ |
| 98 | #!C |
| 99 | [WebMethod] |
| 100 | public List<City> SearchStates(string userName, string password, string name) |
| 101 | { |
| 102 | IWorkspace workspace = Connect(userName, password); |
| 103 | |
| 104 | List<City> resCities = new List<City>(); |
| 105 | IFeatureClass statesClass = (workspace as IFeatureWorkspace).OpenFeatureClass("States"); |
| 106 | IFeatureClass capitalsClass = (workspace as IFeatureWorkspace).OpenFeatureClass("Capitals"); |
| 107 | int nameIndex = capitalsClass.FindField("CITY_NAME"); |
| 108 | |
| 109 | IQueryFilter sfs = new QueryFilterClass(); |
| 110 | sfs.WhereClause = "STATE_ABBR = '" + name + "'"; |
| 111 | IFeatureCursor resCursor = statesClass.Search(sfs, true); |
| 112 | |
| 113 | IFeature state = resCursor.NextFeature(); |
| 114 | while (state != null) |
| 115 | { |
| 116 | |
| 117 | ISpatialFilter sfc = new SpatialFilterClass(); |
| 118 | IGeometry buffer = state.Shape; |
| 119 | sfc.Geometry = buffer; |
| 120 | sfc.SpatialRel = esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects; |
| 121 | |
| 122 | IFeatureCursor resCursorCy = capitalsClass.Search(sfc, true); |
| 123 | IFeature capital = resCursorCy.NextFeature(); |
| 124 | |
| 125 | while (capital != null) |
| 126 | { |
| 127 | resCities.Add(new City(capital.get_Value(nameIndex) as string, 0, 0)); |
| 128 | capital = resCursorCy.NextFeature(); |
| 129 | } |
| 130 | |
| 131 | Marshal.ReleaseComObject(resCursorCy); |
| 132 | state = resCursor.NextFeature(); |
| 133 | } |
| 134 | |
| 135 | Marshal.ReleaseComObject(resCursor); |
| 136 | return resCities; |
| 137 | } |
| 138 | }}} |