1) В описании xsd у элемента [B]tSpelementUnitZUOut [/B]есть атрибут [B]SuNmb[/B], который описывается так: "Номер части элемента (порядок обхода)".
2) У [B]tOrdinateOut [/B]есть [B]NumGeopoint [/B]- Номер точки (межевой точки)
3) У [B]tBorder [/B]есть три атрибута :
[B]Spatial [/B]- Порядковый номер элемента контура
[B]Point1 [/B]- [U]Порядковый [/U]номер точки1 в элементе
[B]Point2 [/B]- [U]Порядковый [/U]номер точки2 в элементе
Т.е. чтобы мне выяснить что за ребро описано и с какими номерами точек, то по идее нужно сделать как-то так:
[CODE]protected static void GetBorderPointNames(tEntitySpatialBordersZUOut es, tBorder border, out string point1, out string point2)
{
var SpatialElement = es.SpatialElement[border.Spatial - 1];
var su1 = SpatialElement.SpelementUnit[border.Point1 - 1];
point1 = su1.Ordinate==null ? su1.SuNmb : su1.Ordinate.NumGeopoint;
var su2 = SpatialElement.SpelementUnit[border.Point2 - 1];
point2 = su2.Ordinate==null ? su2.SuNmb : su2.Ordinate.NumGeopoint;
}[/CODE]///Код упростил и убрал доп проверки.
И это работало с выписками 5-ой версии.
Теперь получили выписку где значения [B]SuNmb, Point1, Point2 [/B]противоречат описаниям:
[CODE]<ns3:SpatialElement>
<ns3:SpelementUnit TypeUnit="Точка" SuNmb="12693">
<ns3:Ordinate X="5932889.15" Y="305709.07" OrdNmb="1" DeltaGeopoint="7.50" />
</ns3:SpelementUnit>
<ns3:SpelementUnit TypeUnit="Точка" SuNmb="3014">
<ns3:Ordinate X="5932880.19" Y="305695.47" OrdNmb="1" DeltaGeopoint="7.50" />
</ns3:SpelementUnit>
<ns3:SpelementUnit TypeUnit="Точка" SuNmb="3013">
<ns3:Ordinate X="5932930.25" Y="305693.14" OrdNmb="1" DeltaGeopoint="7.50" />
</ns3:SpelementUnit>
<ns3:SpelementUnit TypeUnit="Точка" SuNmb="12799">
<ns3:Ordinate X="5932942.61" Y="305691.85" OrdNmb="1" DeltaGeopoint="7.50" />
</ns3:SpelementUnit>
.....
<ns3:Borders>
<ns3:Border Spatial="1" Point1="12693" Point2="3014">
<ns3:Edge>
<ns3:Length>16.29</ns3:Length>
<ns3:DirectionAngle>
<ns3:Degree>236</ns3:Degree>
<ns3:Minute>37</ns3:Minute>
</ns3:DirectionAngle>
</ns3:Edge>
</ns3:Border>
<ns3:Border Spatial="1" Point1="3014" Point2="3013">
<ns3:Edge>
<ns3:Length>50.11</ns3:Length>
<ns3:DirectionAngle>
<ns3:Degree>357</ns3:Degree>
<ns3:Minute>20</ns3:Minute>
</ns3:DirectionAngle>
</ns3:Edge>
</ns3:Border>
<ns3:Border Spatial="1" Point1="3013" Point2="12799">
<ns3:Edge>
<ns3:Length>12.43</ns3:Length>
<ns3:DirectionAngle>
<ns3:Degree>354</ns3:Degree>
<ns3:Minute>3</ns3:Minute>
</ns3:DirectionAngle>
</ns3:Edge>
</ns3:Border>
<ns3:Border Spatial="1" Point1="12799" Point2="3114">
<ns3:Edge>
<ns3:Length>12.36</ns3:Length>
<ns3:DirectionAngle>
<ns3:Degree>0</ns3:Degree>
<ns3:Minute>8</ns3:Minute>
</ns3:DirectionAngle>
</ns3:Edge>
</ns3:Border>
....
[/CODE]Т.е. из этого файла я делаю вывод, что
[B]SuNmb[/B] - это на самом деле номер межевой точки (а не порядок обхода, т.к. они нумеруются не по порядку)
[B]Point1, Point2 [/B]- это на самом деле тоже номера межевых точек, а не порядковые номера в элементе.
при этом [B]Spatial [/B]- таки Порядковый номер элемента контура
Так конечно для меня проще - зная бордер, я сразу знаю номера точек, НО это же не соответствует документации, и вдруг такое поведение изменится?
Коллеги сталкивались с таким? или элемент Бордер не анализируете? Может знаете, разработчикам куда писать по этому вопросу?
//выписку прикрепляю. кстати в выписке баг, о котором я упоминал тут: https://forum-rosreestr.ru/messages/forum25/topic465/message7908/#message7908