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.
115A8E589BD0D111AA7C00C04FA33A1501000A0000002600000053006F007500720063006500460065006100740075007200650043006C00610073007300000008000200000000001E00000041006E006E006F00500072006F00700065007200740069006500730000000D00F349581D330DD211A26F080009B6F22B020001000000454100011C0DD211A26F080009B6F22B07001A0000005B0046006500610074005F004E0061006D0065005D0020000000FFFF000000000000000000000000FFFF0000FFFF0000000000000000000000000000000000000000FFFF10000000440065006600610075006C0074000000020000000000743E5AB69329D1119A430080C7EC5C96040096C4E97E23D1D0118383080009B996CC01000100000000000000000000000000000000000000000000000000000000FFFFFFFF030000000000000000000000000000000000000000000000344000000000000014400D0000000000000096C4E97E23D1D0118383080009B996CC0100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005940000000000000594001000000000000000000000000000000000080564001763E5AB69329D1119A430080C7EC5C9622B837FA59A9CD4A834A0E114BF420B801000000000000000000FFFF10727030D552D011A8F200608C85EDE502005000000003000000005910045D74314180F3637970852041EE5A4D68017631411F762D49B6852041010000000200000000000000EE5A4D68017631411F762D49B6852041005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3FF9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC0100010000FAF202B0ADAE3C40000000000000000000000000000000000000000000000000F03F000000000D0000000000000041CBA500DA52D011A8F200608C85EDE502001400000001000000005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F000000000000000000000000000000000E0000004D00310032003400520032000000000000000000224001000000000000000000E03F03E6147992C8D0118BB6080009EE4E410100F9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC010001000014C5A8249A054B400000000000000000000000000000000001000000000000000000000000000D0000000000000096C4E97E23D1D0118383080009B996CC010001000000000000000059400000000000000000000000000000000001000D00000000000000000000000352E30B918FCE119DE300AA004BB851010000009001905F010005417269616C0000919B09D798E29E49975772BB39E55CF30000895253EEC941D111880A080009EC732A06000000000000000300000003000000010000008C95422411D7D2119F4100C04F6BC6A50200FFFF0000000000000000FFFF00000000FFFF000000000000000000000000000077431A26D5D9D211A806CC9F870BCD5A0100000000000300000003000000030000000000000000000000030000000300000003000000000000000000000003000000030000000300000000000000FFFF000000000000000000000000000072431A26D5D9D211A806CC9F870BCD5A01000200000002000000020000000100000002000000020000000200000003000000010000000000000000003E4000000000000000000000000000000000000000000100000002000000000000000000000000000000077215AA79E0D2119F4800C04F6BC6A50200FFFF12727030D552D011A8F200608C85EDE503000B6384D95BC22FC16E235579554572C1A08B0D414740354174AE5A790AB65741000000000067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F0000000000A8BD400000000000A8BD4003000000FFFFFFFF00000000000000000000000000000000FFFF00000000000000000100000010000000560065007200730069006F006E00000002000200160000004100750074006F0043007200650061007400650000000B00FFFF1E000000
#Reference scale begins below
5200650066006500720065006E00630065005300630061006C00650000000D00C6DAC3857865D3119FBA00C04F6BC6A502000000000000A8BD400300000022000000530079006D0062006F006C0043006F006C006C0065006300740069006F006E0000000D00668C5D0E918DD3119FCA00C04F6BC6A503000100000000000000743E5AB69329D1119A430080C7EC5C96040096C4E97E23D1D0118383080009B996CC01000100000000000000000000000000000000000000000000000000000000FFFFFFFF030000000000000000000000000000000000000000000000344000000000000014400D0000000000000096C4E97E23D1D0118383080009B996CC0100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005940000000000000594001000000000000000000000000000000000080564001763E5AB69329D1119A430080C7EC5C9622B837FA59A9CD4A834A0E114BF420B801000000000000000000FFFF10727030D552D011A8F200608C85EDE502005000000003000000005910045D74314180F3637970852041EE5A4D68017631411F762D49B6852041010000000200000000000000EE5A4D68017631411F762D49B6852041005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3FF9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC0100010000FAF202B0ADAE3C40000000000000000000000000000000000000000000000000F03F000000000D0000000000000041CBA500DA52D011A8F200608C85EDE502001400000001000000005910045D74314180F36379708520410067622AD21DB211BF5108002022F57306000102000050524F4A43535B224E41445F313938335F5374617465506C616E655F4D6F6E74616E615F464950535F323530305F46656574222C47454F4743535B224743535F4E6F7274685F416D65726963616E5F31393833222C444154554D5B22445F4E6F7274685F416D65726963616E5F31393833222C53504845524F49445B224752535F31393830222C363337383133372E302C3239382E3235373232323130315D5D2C5052494D454D5B22477265656E77696368222C302E305D2C554E49545B22446567726565222C302E303137343533323932353139393433335D5D2C50524F4A454354494F4E5B224C616D626572745F436F6E666F726D616C5F436F6E6963225D2C504152414D455445525B2246616C73655F45617374696E67222C313936383530302E305D2C504152414D455445525B2246616C73655F4E6F727468696E67222C302E305D2C504152414D455445525B2243656E7472616C5F4D6572696469616E222C2D3130392E355D2C504152414D455445525B225374616E646172645F506172616C6C656C5F31222C34352E305D2C504152414D455445525B225374616E646172645F506172616C6C656C5F32222C34392E305D2C504152414D455445525B224C617469747564655F4F665F4F726967696E222C34342E32355D2C554E49545B22466F6F745F5553222C302E333034383030363039363031323139325D5D0000000000000000000000000000000000010000000050F9E59BC100000030C27897C1D2662EEC780C824100000000006AF8C0000000000088C34000000000006AF8C0000000000088C3406871D9FB67E06A3F2D431CEBE2362A3F2D431CEBE2362A3F000000000000000000000000000000000E0000004D00310032003400520032000000000000000000224001000000000000000000E03F03E6147992C8D0118BB6080009EE4E410100F9E5147992C8D0118BB6080009EE4E41010096C4E97E23D1D0118383080009B996CC010001000014C5A8249A054B400000000000000000000000000000000001000000000000000000000000000D0000000000000096C4E97E23D1D0118383080009B996CC010001000000000000000059400000000000000000000000000000000001000D00000000000000000000000352E30B918FCE119DE300AA004BB851010000009001DC7C010005417269616CFFFF919B09D798E29E49975772BB39E55CF3000010000000440065006600610075006C007400000001000000280000005500700064006100740065004F006E00530068006100700065004300680061006E006700650000000B00FFFF200000005200650071007500690072006500530079006D0062006F006C004900440000000B0000002A00000041006C006C006F007700530079006D0062006F006C004F007600650072007200690064006500730000000B00FFFF2A0000004F0076006500720070006F007300740065007200500072006F00700065007200740069006500730000000D00563DC7E0886C8C49B77C78606E688C970200FFFF96C4E97E23D1D0118383080009B996CC0100010000E21C58AC04464C40091768519039534083A2B8D49E065140010000000000000000000040"
ZX›ÐѪ|À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@ hQ9S@ƒ¢¸Ô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!
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.
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?
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.
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.