Select to view content in your preferred language

Personal geodatabases: How were annotation reference scales determined?

80
5
yesterday
Labels (2)
AlfredBaldenweck
MVP Regular Contributor

Note: I know that Personal Geodatabases are deprecated. Please do not inform me of that here, I am well aware. 

That being said, I'm working on a project involving them here and could use some help. ArcMap is not an option for me.

How were annotation reference scales in personal geodatabases determined?

For example, I  have a personal geodatabase containing an annotation feature class that I know for a fact has a reference scale of 1:24,000.

In this version of the MDB format, annotation properties were stored in an XML in a particular field of a certain system table.

The reference scale is documented like so:

<Key>ReferenceScale</Key>
<Value xsi:type='typens:XMLPersistedObject'> 
     <Bytes>xtrDhXhl0xGfugDAT2vGpQAAAAACAAAAAAAAcNdACQAAAA==
     </Bytes>
</Value>

That appears to be a base 64 value, but I can't get anything useful out of it 

 

import codecs
y = b"xtrDhXhl0xGfugDAT2vGpQAAAAACAAAAAAAAcNdACQAAAA=="
y = codecs.decode(y, "base64")
print(y)
#b'\xc6\xda\xc3\x85xe\xd3\x11\x9f\xba\x00\xc0Ok\xc6\xa5\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00p\xd7@\t\x00\x00\x00'

print(y.decode("mbcs"))
#ÆÚÃ…xeÓŸº

 

Similarly, on a different dataset using an earlier form of MDB (these were set up differently, so what we get instead is the entire annotation definition in a blob field) I could get the field as hex. If I decode it online (since I'm having trouble getting the right encoding with python) I can see that there's reference scale in there somewhere, but nothing around it maps to any number. I don't know what the scale of this one is supposed to be.

Spoiler

 

115A8E589BD0D111AA7C00C04FA33A1501000A0000002600000053006F007500720063006500460065006100740075007200650043006C00610073007300000008000200000000001E00000041006E006E006F00500072006F00700065007200740069006500730000000D00F349581D330DD211A26F080009B6F22B020001000000454100011C0DD211A26F080009B6F22B07001A0000005B0046006500610074005F004E0061006D0065005D0020000000FFFF000000000000000000000000FFFF0000FFFF0000000000000000000000000000000000000000FFFF10000000440065006600610075006C0074000000020000000000743E5AB69329D1119A430080C7EC5C96040096C4E97E23D1D0118383080009B996CC01000100000000000000000000000000000000000000000000000000000000FFFFFFFF030000000000000000000000000000000000000000000000344000000000000014400D0000000000000096C4E97E23D1D0118383080009B996CC0100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005940000000000000594001000000000000000000000000000000000080564001763E5AB69329D1119A430080C7EC5C9622B837FA59A9CD4A834A0E114BF420B801000000000000000000FFFF10727030D552D011A8F200608C85EDE502005000000003000000005910045D74314180F3637970852041EE5A4D68017631411F762D49B6852041010000000200000000000000EE5A4D68017631411F762D49B6852041005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3FF9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC0100010000FAF202B0ADAE3C40000000000000000000000000000000000000000000000000F03F000000000D0000000000000041CBA500DA52D011A8F200608C85EDE502001400000001000000005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F000000000000000000000000000000000E0000004D00310032003400520032000000000000000000224001000000000000000000E03F03E6147992C8D0118BB6080009EE4E410100F9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC010001000014C5A8249A054B400000000000000000000000000000000001000000000000000000000000000D0000000000000096C4E97E23D1D0118383080009B996CC010001000000000000000059400000000000000000000000000000000001000D00000000000000000000000352E30B918FCE119DE300AA004BB851010000009001905F010005417269616C0000919B09D798E29E49975772BB39E55CF30000895253EEC941D111880A080009EC732A06000000000000000300000003000000010000008C95422411D7D2119F4100C04F6BC6A50200FFFF0000000000000000FFFF00000000FFFF000000000000000000000000000077431A26D5D9D211A806CC9F870BCD5A0100000000000300000003000000030000000000000000000000030000000300000003000000000000000000000003000000030000000300000000000000FFFF000000000000000000000000000072431A26D5D9D211A806CC9F870BCD5A01000200000002000000020000000100000002000000020000000200000003000000010000000000000000003E4000000000000000000000000000000000000000000100000002000000000000000000000000000000077215AA79E0D2119F4800C04F6BC6A50200FFFF12727030D552D011A8F200608C85EDE503000B6384D95BC22FC16E235579554572C1A08B0D414740354174AE5A790AB65741000000000067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F0000000000A8BD400000000000A8BD4003000000FFFFFFFF00000000000000000000000000000000FFFF00000000000000000100000010000000560065007200730069006F006E00000002000200160000004100750074006F0043007200650061007400650000000B00FFFF1E000000

 

#Reference scale begins below

 

5200650066006500720065006E00630065005300630061006C00650000000D00C6DAC3857865D3119FBA00C04F6BC6A502000000000000A8BD400300000022000000530079006D0062006F006C0043006F006C006C0065006300740069006F006E0000000D00668C5D0E918DD3119FCA00C04F6BC6A503000100000000000000743E5AB69329D1119A430080C7EC5C96040096C4E97E23D1D0118383080009B996CC01000100000000000000000000000000000000000000000000000000000000FFFFFFFF030000000000000000000000000000000000000000000000344000000000000014400D0000000000000096C4E97E23D1D0118383080009B996CC0100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005940000000000000594001000000000000000000000000000000000080564001763E5AB69329D1119A430080C7EC5C9622B837FA59A9CD4A834A0E114BF420B801000000000000000000FFFF10727030D552D011A8F200608C85EDE502005000000003000000005910045D74314180F3637970852041EE5A4D68017631411F762D49B6852041010000000200000000000000EE5A4D68017631411F762D49B6852041005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3FF9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC0100010000FAF202B0ADAE3C40000000000000000000000000000000000000000000000000F03F000000000D0000000000000041CBA500DA52D011A8F200608C85EDE502001400000001000000005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F000000000000000000000000000000000E0000004D00310032003400520032000000000000000000224001000000000000000000E03F03E6147992C8D0118BB6080009EE4E410100F9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC010001000014C5A8249A054B400000000000000000000000000000000001000000000000000000000000000D0000000000000096C4E97E23D1D0118383080009B996CC010001000000000000000059400000000000000000000000000000000001000D00000000000000000000000352E30B918FCE119DE300AA004BB851010000009001DC7C010005417269616CFFFF919B09D798E29E49975772BB39E55CF3000010000000440065006600610075006C007400000001000000280000005500700064006100740065004F006E00530068006100700065004300680061006E006700650000000B00FFFF200000005200650071007500690072006500530079006D0062006F006C004900440000000B0000002A00000041006C006C006F007700530079006D0062006F006C004F007600650072007200690064006500730000000B00FFFF2A0000004F0076006500720070006F007300740065007200500072006F00700065007200740069006500730000000D00563DC7E0886C8C49B77C78606E688C970200FFFF96C4E97E23D1D0118383080009B996CC0100010000E21C58AC04464C40091768519039534083A2B8D49E065140010000000000000000000040"

Spoiler

 

ZŽX›ÐѪ|ÀO£:
&SourceFeatureClassAnnoProperties
óIX3
Ò¢o ¶ò+EA
Ò¢o ¶ò+[Feat_Name] ÿÿÿÿÿÿÿÿDefaultt>Z¶“)ÑšC€Çì\––Äé~#ÑЃƒ ¹–Ìÿÿÿÿ4@@
–Äé~#ÑЃƒ ¹–ÌY@Y@€V@v>Z¶“)ÑšC€Çì\–"¸7úY©ÍJƒJKô ¸ÿÿrp0ÕRШò`Œ…íåPY]t1A€ócyp… AîZMhv1Av-I¶… AîZMhv1Av-I¶… AY]t1A€ócyp… Agb*Ò²¿Q "õsPROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]Pùå›Á0Âx—ÁÒf.ìx ‚AjøÀˆÃ@jøÀˆÃ@hqÙûgàj?-Cëâ6*?-Cëâ6*?ùåy’ÈЋ¶ îNA–Äé~#ÑЃƒ ¹–Ìúò°­®<@ð?
AË¥ÚRШò`Œ…íåY]t1A€ócyp… Agb*Ò²¿Q "õsPROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]Pùå›Á0Âx—ÁÒf.ìx ‚AjøÀˆÃ@jøÀˆÃ@hqÙûgàj?-Cëâ6*?-Cëâ6*?M124R2"@à?æy’ÈЋ¶ îNAùåy’ÈЋ¶ îNA–Äé~#ÑЃƒ ¹–ÌŨ$šK@
–Äé~#ÑЃƒ ¹–ÌY@
Rã ‘ÎãªK¸Q_Arial‘› טâžI—Wr»9å\ó‰RSîÉAш
 ìs*Œ•B$×ÒŸAÀOkÆ¥ÿÿÿÿÿÿwC&ÕÙҨ̟‡ ÍZÿÿrC&ÕÙҨ̟‡ ÍZ>@rªyàÒŸHÀOkÆ¥ÿÿrp0ÕRШò`Œ…íå c„Ù[Â/Án#UyUErÁ ‹
AG@5At®Zy
¶WAgb*Ò²¿Q "õsPROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]Pùå›Á0Âx—ÁÒf.ìx ‚AjøÀˆÃ@jøÀˆÃ@hqÙûgàj?-Cëâ6*?-Cëâ6*?¨½@¨½@ÿÿÿÿÿÿVersionAutoCreate ÿÿ

 

 

 

 

ReferenceScale
ÆÚÃ…xeÓŸºÀOkÆ¥¨½@"SymbolCollection
fŒ]‘ÓŸÊÀOkÆ¥t>Z¶“)ÑšC€Çì\––Äé~#ÑЃƒ ¹–Ìÿÿÿÿ4@@
–Äé~#ÑЃƒ ¹–ÌY@Y@€V@v>Z¶“)ÑšC€Çì\–"¸7úY©ÍJƒJKô ¸ÿÿrp0ÕRШò`Œ…íåPY]t1A€ócyp… AîZMhv1Av-I¶… AîZMhv1Av-I¶… AY]t1A€ócyp… Agb*Ò²¿Q "õsPROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]Pùå›Á0Âx—ÁÒf.ìx ‚AjøÀˆÃ@jøÀˆÃ@hqÙûgàj?-Cëâ6*?-Cëâ6*?ùåy’ÈЋ¶ îNA–Äé~#ÑЃƒ ¹–Ìúò°­®<@ð?
AË¥ÚRШò`Œ…íåY]t1A€ócyp… Agb*Ò²¿Q "õsPROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]Pùå›Á0Âx—ÁÒf.ìx ‚AjøÀˆÃ@jøÀˆÃ@hqÙûgàj?-Cëâ6*?-Cëâ6*?M124R2"@à?æy’ÈЋ¶ îNAùåy’ÈЋ¶ îNA–Äé~#ÑЃƒ ¹–ÌŨ$šK@
–Äé~#ÑЃƒ ¹–ÌY@
Rã ‘ÎãªK¸QÜ|Arialÿÿ‘› טâžI—Wr»9å\óDefault(UpdateOnShapeChange ÿÿ RequireSymbolID *AllowSymbolOverrides ÿÿ*OverposterProperties
V=ÇàˆlŒI·|x`nhŒ—ÿÿ–Äé~#ÑЃƒ ¹–ÌâX¬FL@ hQ9S@ƒ¢¸ÔžQ@@

So, all in all, I'm pretty confused as to how I can figure this out in either version and would appreciate any pointers.

Thanks!

 

 

0 Kudos
5 Replies
RobertKrisher
Esri Regular Contributor

The easiest way to access that programmatically is to use one of the APIs provided to read the annotation properties. Because you're using a MGDB I assume you're using ArcGIS Desktop? Which means you would use .NET, Java, or C++ and ArcObjects to access this information.

It is possible to access ArcObjects using Python code, but it requires jumping through some extra hoops in order to load and work with the COM Objects used by ArcObjects.

0 Kudos
AlfredBaldenweck
MVP Regular Contributor

Good information. Unfortunately, no ArcMap for me, which is why I'm as deep into this as I am. Do you have any information on accessing ArcObjects through python these days?

0 Kudos
RobertKrisher
Esri Regular Contributor

What form and version of ArcGIS is installed in the environment where you're running your Python? This will determine which APIs are available to you.

0 Kudos
AlfredBaldenweck
MVP Regular Contributor

Pro 3.5

0 Kudos
RobertKrisher
Esri Regular Contributor

What happens if you do an Arcpy.Describe on the class? I'm not even sure if you can access the contents of the Personal Geodatabase using Arcpy in the ArcGIS Pro runtime.

0 Kudos