Initial import
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
update
|
||||
update_remote
|
||||
old/
|
||||
_site/
|
||||
demos/shp/
|
||||
1
.ruby-version
Normal file
@@ -0,0 +1 @@
|
||||
2.6.3
|
||||
137
DE.svg
Normal file
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
|
||||
<svg enable_background="new 0 0 850 851" height="851px" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 850 851" width="850px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
path {
|
||||
fill-rule: evenodd;
|
||||
}
|
||||
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<metadata>
|
||||
<views>
|
||||
<view h="851" padding="0.06" w="850"><proj id="laea" lat0="51.423631497" lon0="7.55593198638"/><bbox h="104.32" w="79.29" x="982.53" y="950.78"/></view>
|
||||
</views>
|
||||
</metadata>
|
||||
<g class="" id="context"><path
|
||||
d="M850,633L842,629L838,628L833,628L829,632L827,635L817,637L806,636L790,627L782,628L775,627L761,621L755,620L745,624L744,621L739,619L734,619L733,621L732,637L731,643L725,643L718,654L718,661L709,661L704,660L700,661L697,666L685,667L675,665L671,656L666,653L660,650L658,650L658,652L659,665L658,668L654,673L651,675L638,670L637,672L635,689L629,696L622,700L614,703L602,711L597,716L593,721L594,725L600,733L608,742L608,750L605,759L615,761L616,765L616,773L616,780L615,783L612,784L606,781L599,776L599,771L597,768L591,766L585,767L581,770L578,770L575,767L569,765L559,763L558,764L559,770L558,773L526,778L517,782L510,787L505,789L504,792L499,796L493,797L492,796L488,798L482,800L477,799L471,792L470,788L461,788L455,785L439,787L438,799L436,804L432,810L428,813L424,814L424,805L417,804L415,802L416,799L413,794L408,791L399,787L393,785L391,787L387,790L380,789L378,790L380,792L385,796L384,804L379,816L380,817L385,832L384,835L383,837L386,837L394,839L401,842L405,849L430,849L436,843L441,845L443,849L488,849L490,845L497,841L510,840L517,838L523,838L528,838L534,838L547,832L560,827L560,832L558,837L560,842L567,849L796,849L800,845L809,843L823,845L824,842L823,832L826,827L830,825L839,813L844,809L850,809L850,794L848,786L850,780L847,772L847,769L850,768L850,744L844,743L843,741L850,734L850,633Z "
|
||||
data-iso="AUT"/><path
|
||||
d="M126,464L135,461L139,467L133,466L145,467L146,469L153,474L155,479L160,483L156,488L158,493L164,494L167,498L167,503L168,511L156,519L152,529L152,531L151,530L150,527L143,526L136,534L130,546L127,550L126,561L130,566L136,578L131,587L129,589L124,588L111,591L106,586L97,574L92,572L87,569L79,563L74,562L70,562L69,556L69,549L66,544L71,527L68,525L65,526L61,530L57,540L50,544L39,545L26,543L24,538L27,533L28,529L24,524L27,514L19,506L13,504L1,503L-1,505L-3,506L-5,504L-7,491L-9,489L-16,486L-26,485L-29,482L-30,476L-30,469L-33,462L-38,457L-43,458L-50,461L-55,462L-60,458L-65,452L-70,445L-70,441L-69,437L-72,427L-73,423L-44,407L-27,400L-19,398L-18,406L-15,411L-12,412L-5,408L1,409L6,411L10,416L15,417L24,413L32,407L35,403L36,400L41,402L45,403L47,402L46,396L50,393L54,391L55,394L59,397L62,397L69,390L71,392L73,399L75,400L81,399L87,393L88,395L90,406L97,413L103,415L111,414L114,413L116,414L118,417L122,422L131,425L136,429L135,433L130,443L129,449L124,455L123,457L126,464L126,464Z "
|
||||
data-iso="BEL"/><path
|
||||
d="M383,837L378,837L377,837L376,833L376,826L379,816L384,804L385,796L380,792L378,790L366,783L355,776L351,776L334,778L331,773L328,772L324,774L316,767L313,766L309,767L304,771L302,775L303,778L305,779L312,778L312,782L307,783L303,785L297,784L288,784L281,787L270,788L254,788L249,785L240,790L235,799L230,801L225,802L221,801L218,799L218,797L216,796L210,796L205,799L200,805L201,808L206,809L205,814L203,818L185,839L184,842L181,844L170,849L405,849L401,842L394,839L386,837L383,837Z M443,849L441,845L436,843L430,849L443,849Z "
|
||||
data-iso="CHE"/><path
|
||||
d="M704,435L703,436L701,439L699,440L691,436L691,430L689,430L687,427L686,423L683,421L674,421L671,420L669,421L667,424L671,428L676,432L675,433L665,438L659,442L653,445L647,450L635,455L626,457L624,459L621,466L619,468L615,466L607,472L603,479L593,481L589,490L584,489L578,488L574,491L569,492L564,493L558,498L553,506L548,516L545,509L538,503L535,508L538,513L541,517L544,524L549,530L556,534L561,538L565,543L565,545L562,553L558,559L559,562L570,575L576,586L579,591L584,595L588,599L595,598L603,605L611,614L617,618L621,620L625,623L629,631L632,633L639,632L649,640L655,645L658,650L660,650L666,653L671,656L675,665L685,667L697,666L700,661L704,660L709,661L718,661L718,654L725,643L731,643L732,637L733,621L734,619L739,619L744,621L745,624L755,620L761,621L775,627L782,628L790,627L806,636L817,637L827,635L829,632L833,628L838,628L842,629L850,633L850,464L846,463L839,463L839,464L843,471L849,479L849,481L836,491L833,495L831,497L825,496L817,484L807,475L805,473L799,471L797,468L801,462L805,460L808,452L804,448L799,445L785,449L782,451L777,446L774,446L763,440L757,440L745,437L741,437L738,436L733,429L731,422L722,419L714,418L713,419L714,427L714,431L709,434L704,435Z "
|
||||
data-iso="CZE"/><path
|
||||
d="M626,121L613,113L614,120L620,126L619,132L621,137L629,138L636,137L638,137L637,132L637,129L626,121Z M462,94L462,92L459,86L450,83L448,85L446,90L450,91L453,95L462,94Z M604,88L597,84L596,81L600,73L598,69L589,66L587,63L585,58L580,58L575,65L575,70L572,75L572,78L572,89L574,96L585,104L588,103L591,94L598,93L605,98L606,95L604,88Z M304,70L304,66L295,67L294,70L297,72L302,72L304,70Z M310,62L316,71L322,81L326,87L326,94L319,98L308,101L307,106L308,112L314,112L316,110L320,111L324,115L324,141L325,145L329,148L334,151L343,152L349,155L368,180L377,185L371,184L365,180L349,159L342,155L324,158L307,154L302,163L301,175L303,186L301,202L300,190L298,187L291,181L289,183L288,191L286,197L283,199L278,195L281,188L271,173L249,172L228,174L224,176L218,186L216,194L214,204L220,209L223,214L222,223L222,242L222,246L218,254L214,268L213,277L211,279L195,279L192,289L192,292L195,296L200,298L209,298L213,304L212,316L209,322L201,329L195,333L193,339L198,344L194,351L180,357L174,356L170,360L166,357L158,354L148,358L145,361L145,365L151,376L153,378L153,382L159,393L157,407L151,420L155,427L142,438L138,437L139,444L143,445L147,447L149,452L145,467L146,469L153,474L155,479L160,483L156,488L158,493L164,494L167,498L167,503L168,511L156,519L152,529L152,531L151,533L151,539L153,545L160,556L165,559L172,563L175,563L176,568L175,572L168,583L166,592L165,598L168,597L173,599L178,604L182,614L191,628L193,628L198,624L201,623L208,626L209,631L216,631L221,633L229,631L235,629L238,629L243,635L248,638L261,640L274,643L283,647L283,655L269,674L263,681L260,689L258,703L255,716L249,729L246,738L248,744L247,754L243,767L243,777L245,784L249,785L254,788L270,788L281,787L288,784L297,784L303,785L307,783L312,782L312,778L305,779L303,778L302,775L304,771L309,767L313,766L316,767L324,774L328,772L331,773L334,778L351,776L355,776L366,783L378,790L380,789L387,790L391,787L393,785L399,787L408,791L413,794L416,799L415,802L417,804L424,805L424,814L428,813L432,810L436,804L438,799L439,787L455,785L461,788L470,788L471,792L477,799L482,800L488,798L492,796L493,797L499,796L504,792L505,789L510,787L517,782L526,778L558,773L559,770L558,764L559,763L569,765L575,767L578,770L581,770L585,767L591,766L597,768L599,771L599,776L606,781L612,784L615,783L616,780L616,773L616,765L615,761L605,759L608,750L608,742L600,733L594,725L593,721L597,716L602,711L614,703L622,700L629,696L635,689L637,672L638,670L651,675L654,673L658,668L659,665L658,652L658,650L655,645L649,640L639,632L632,633L629,631L625,623L621,620L617,618L611,614L603,605L595,598L588,599L584,595L579,591L576,586L570,575L559,562L558,559L562,553L565,545L565,543L561,538L556,534L549,530L544,524L541,517L538,513L535,508L538,503L545,509L548,516L553,506L558,498L564,493L569,492L574,491L578,488L584,489L589,490L593,481L603,479L607,472L615,466L619,468L621,466L624,459L626,457L635,455L647,450L653,445L659,442L665,438L675,433L676,432L671,428L667,424L669,421L671,420L674,421L683,421L686,423L687,427L689,430L691,430L691,436L699,440L701,439L703,436L704,435L704,433L709,419L711,410L713,394L707,382L706,376L704,374L692,369L691,367L692,358L690,355L687,351L683,345L681,338L685,331L685,325L688,313L685,310L684,306L684,300L682,296L678,294L675,290L673,286L673,279L675,269L668,258L651,245L642,237L642,231L645,226L651,221L655,212L656,194L646,168L642,151L642,150L628,148L623,145L618,140L614,124L607,111L591,114L572,101L564,88L556,88L549,86L537,85L527,98L522,104L515,111L512,117L494,120L488,123L475,139L472,141L454,136L443,138L439,136L436,130L447,119L450,109L447,99L443,99L431,106L408,95L400,98L395,90L380,92L384,88L388,81L388,72L384,65L380,61L371,59L371,57L366,56L364,54L357,56L348,60L343,60L339,56L322,51L309,51L310,62Z M288,63L290,56L305,55L307,52L292,51L292,48L293,40L296,36L293,35L287,50L287,65L288,63Z "
|
||||
data-iso="DEU"/><path
|
||||
d="M464,47L458,41L447,43L446,47L446,59L471,73L479,69L484,69L489,67L488,58L487,54L482,51L475,52L464,47Z M414,53L415,52L410,49L406,48L401,44L397,42L398,45L406,53L410,55L414,53Z M532,35L524,29L518,28L516,26L515,31L508,42L512,44L521,36L530,37L532,35Z M389,50L389,48L385,40L375,34L372,33L374,49L380,50L383,52L389,50Z M429,62L438,31L439,21L438,21L434,32L428,41L426,47L422,53L422,55L426,63L429,62Z M654,0L654,11L666,17L676,19L677,17L680,10L679,4L672,0L654,0Z M376,0L376,3L381,16L383,19L384,23L400,30L411,33L421,32L430,24L431,17L429,10L431,5L429,0L376,0Z M451,0L451,3L458,15L460,16L465,14L469,14L479,16L482,25L483,31L486,37L486,43L494,57L505,52L505,42L505,36L504,26L504,14L517,9L522,3L521,0L451,0Z M309,51L322,51L339,56L343,60L348,60L357,56L364,54L366,56L371,57L369,47L370,43L365,37L361,36L354,36L357,28L364,19L366,13L363,0L305,0L307,8L308,25L303,28L307,36L308,42L309,51Z "
|
||||
data-iso="DNK"/><path
|
||||
d="M249,785L245,784L243,777L243,767L247,754L248,744L246,738L249,729L255,716L258,703L260,689L263,681L269,674L283,655L283,647L274,643L261,640L248,638L243,635L238,629L235,629L229,631L221,633L216,631L209,631L208,626L201,623L198,624L193,628L191,628L182,614L178,604L173,599L168,597L165,598L161,595L159,594L155,593L151,594L148,597L144,598L140,597L132,592L129,589L124,588L111,591L106,586L97,574L92,572L87,569L79,563L74,562L70,562L69,556L69,549L66,544L71,527L68,525L65,526L61,530L57,540L50,544L39,545L26,543L24,538L27,533L28,529L24,524L27,514L19,506L13,504L1,503L0,503L0,849L170,849L181,844L184,842L185,839L203,818L205,814L206,809L201,808L200,805L205,799L210,796L216,796L218,797L218,799L221,801L225,802L230,801L235,799L240,790L249,785Z "
|
||||
data-iso="FRA"/><path d="M830,825L843,824L845,827L848,837L850,838L850,809L844,809L839,813L830,825Z M850,768L847,769L847,772L850,780L850,768Z M850,734L843,741L844,743L850,744L850,734Z " data-iso="HUN"/><path d="M567,849L560,842L558,837L560,832L560,827L547,832L534,838L528,838L523,838L517,838L510,840L497,841L490,845L488,849L567,849Z " data-iso="ITA"/><path d="M384,835L385,832L380,817L379,816L376,826L376,833L377,837L378,837L383,837L384,835Z " data-iso="LIE"/><path
|
||||
d="M151,530L150,527L143,526L136,534L130,546L127,550L126,561L130,566L136,578L131,587L129,589L132,592L140,597L144,598L148,597L151,594L155,593L159,594L161,595L165,598L166,592L168,583L175,572L176,568L175,563L172,563L165,559L160,556L153,545L151,539L151,533L152,531L151,530Z "
|
||||
data-iso="LUX"/><path
|
||||
d="M1,409L6,411L10,416L15,417L24,413L32,407L35,403L36,400L29,402L22,398L14,402L4,400L0,398L0,409L1,409Z M20,363L10,362L5,364L6,369L12,367L20,375L28,373L20,363Z M83,232L84,221L75,230L73,235L77,239L83,232Z M98,209L93,208L85,215L86,216L98,209Z M36,400L41,402L45,403L47,402L46,396L50,393L54,391L55,394L59,397L62,397L69,390L71,392L73,399L75,400L81,399L87,393L88,395L90,406L97,413L103,415L111,414L114,413L116,414L118,417L122,422L131,425L136,429L135,433L130,443L129,449L124,455L123,457L126,464L126,464L130,466L133,466L145,467L149,452L147,447L143,445L139,444L138,437L142,438L155,427L151,420L157,407L159,393L153,382L153,378L151,376L145,365L145,361L148,358L158,354L166,357L170,360L174,356L180,357L194,351L198,344L193,339L195,333L201,329L209,322L212,316L213,304L209,298L200,298L195,296L192,292L192,289L195,279L211,279L213,277L214,268L218,254L222,246L222,242L222,223L223,214L215,212L209,209L206,204L200,198L185,198L173,200L155,200L144,203L123,214L118,219L112,231L94,244L83,249L80,246L76,245L72,252L70,258L61,294L56,308L49,319L38,332L33,337L30,338L26,345L23,353L21,356L31,371L34,377L23,378L28,383L37,388L39,391L35,392L31,392L16,380L7,377L0,377L0,391L3,392L11,396L22,393L30,398L36,400Z M141,285L141,293L137,298L118,316L107,311L90,305L89,303L90,299L92,297L92,295L93,288L92,283L93,277L97,277L104,273L104,267L99,261L97,256L95,251L94,247L99,243L106,237L113,234L114,236L115,250L115,253L117,255L123,256L129,256L130,259L127,263L127,265L126,272L127,275L129,278L140,280L141,285Z M111,201L126,197L125,196L116,197L103,201L105,202L111,201Z M147,195L144,193L134,193L135,196L147,195Z M171,190L169,190L162,192L163,194L171,190Z M196,183L200,179L197,179L192,181L190,184L196,183Z "
|
||||
data-iso="NLD"/><path
|
||||
d="M637,129L637,132L638,137L646,137L659,140L660,147L660,151L662,158L656,155L642,151L646,168L656,194L655,212L651,221L645,226L642,231L642,237L651,245L668,258L675,269L673,279L673,286L675,290L678,294L682,296L684,300L684,306L685,310L688,313L685,325L685,331L681,338L683,345L687,351L690,355L692,358L691,367L692,369L704,374L706,376L707,382L713,394L711,410L709,419L704,433L704,435L709,434L714,431L714,427L713,419L714,418L722,419L731,422L733,429L738,436L741,437L745,437L757,440L763,440L774,446L777,446L782,451L785,449L799,445L804,448L808,452L805,460L801,462L797,468L799,471L805,473L807,475L817,484L825,496L831,497L833,495L836,491L849,481L849,479L843,471L839,464L839,463L846,463L850,464L850,14L838,18L806,31L792,41L786,47L768,54L758,67L755,75L749,83L741,86L733,88L699,104L666,119L648,130L640,130L637,129Z "
|
||||
data-iso="POL"/><path d="M830,825L826,827L823,832L824,842L823,845L809,843L800,845L796,849L850,849L850,838L848,837L845,827L843,824L830,825Z " data-iso="SVN"/></g>
|
||||
<g class="" id="regions"><path
|
||||
d="M212,319L200,331L195,332L193,335L190,336L198,344L198,346L194,352L192,352L187,353L181,355L169,360L168,358L166,357L156,352L155,354L157,356L144,360L146,364L145,369L148,370L148,374L153,380L153,382L159,391L160,398L159,400L159,408L156,410L153,416L150,425L152,426L155,424L156,425L155,428L151,430L145,435L142,439L139,437L137,440L139,445L141,444L146,445L146,449L150,452L149,457L146,458L144,465L152,472L156,478L157,481L161,483L157,486L155,488L159,494L161,493L167,495L166,496L167,501L166,506L169,510L169,511L172,509L170,506L171,504L174,509L179,506L182,506L186,508L186,508L191,509L196,507L195,501L193,499L194,497L197,494L199,497L202,496L202,494L206,488L209,487L212,484L215,485L219,483L221,480L224,481L227,481L231,480L233,479L234,474L247,470L249,468L254,465L252,462L256,459L258,460L257,453L259,450L264,451L263,455L265,456L269,460L271,460L272,463L276,472L276,474L280,474L281,475L282,473L284,472L284,469L281,466L285,460L291,455L296,456L298,454L302,451L303,447L307,441L306,433L312,433L314,434L317,432L319,419L317,415L312,417L312,418L309,416L310,413L315,406L323,404L326,405L328,403L331,403L331,400L330,400L329,394L332,392L338,392L342,398L345,398L348,396L349,393L353,390L357,382L355,381L361,378L362,376L359,377L359,368L362,363L362,359L362,357L363,355L354,356L355,352L354,350L351,348L352,345L349,343L348,344L344,343L346,340L345,336L345,332L343,331L342,328L334,328L333,324L336,322L338,318L332,315L334,308L338,307L341,301L339,292L334,294L332,297L327,302L322,303L316,302L315,294L311,290L300,294L299,296L298,298L294,298L290,297L292,302L298,306L299,308L300,321L302,323L298,329L297,330L288,329L286,331L279,336L273,336L269,338L267,337L265,333L267,331L271,330L273,325L268,324L266,322L269,315L267,313L270,311L266,305L260,305L254,301L252,296L248,295L246,299L245,305L244,305L235,312L233,312L229,315L226,316L218,316L212,319L212,319Z "
|
||||
data-fips="GM07"
|
||||
data-fips-="GM06"
|
||||
data-iso3="DEU"
|
||||
data-name="Nordrhein-Westfalen"
|
||||
data-p="NW"/><path
|
||||
d="M346,585L345,586L343,591L334,595L335,597L333,598L330,603L327,603L328,597L329,595L331,594L332,592L328,593L320,589L318,582L310,591L303,585L301,585L300,588L303,594L302,598L306,599L306,605L305,614L299,622L297,632L292,643L289,647L287,648L286,650L284,653L279,664L276,666L275,668L272,669L272,671L267,676L264,678L261,683L261,689L262,692L260,694L257,701L257,704L258,710L254,713L253,720L248,726L246,739L249,744L248,748L246,750L245,758L245,759L242,766L243,770L242,773L243,778L247,785L247,786L252,785L251,787L253,790L259,789L262,785L269,788L277,788L287,783L290,782L294,783L295,785L299,786L303,786L310,782L313,785L313,778L310,778L301,778L306,768L311,767L314,764L315,764L316,768L318,765L321,768L323,768L322,771L323,774L326,774L327,772L332,777L339,778L343,776L351,776L355,776L356,778L361,778L380,789L380,789L387,783L387,782L391,782L394,780L399,776L401,775L407,776L410,774L414,774L416,776L416,774L417,774L418,770L418,766L415,762L418,760L416,755L415,745L416,744L418,731L416,727L413,715L407,705L406,703L410,698L410,696L413,694L417,694L424,690L426,688L428,687L429,683L427,677L426,676L425,673L426,671L430,672L436,670L436,674L439,670L437,667L435,666L435,661L436,657L436,656L436,650L437,648L435,645L428,637L423,633L420,631L422,629L422,626L420,625L415,619L413,614L415,614L415,610L412,604L415,602L413,594L410,589L410,587L408,588L408,590L405,593L401,593L399,586L393,587L396,580L393,577L392,572L390,569L386,573L380,573L380,566L374,564L370,562L364,564L361,564L358,566L359,569L362,570L363,572L364,570L366,577L358,579L355,585L346,586L346,585Z "
|
||||
data-fips="GM01"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Baden-Württemberg"
|
||||
data-p="BW"/><path
|
||||
d="M392,401L389,400L390,402L389,403L387,401L385,401L380,405L382,407L381,412L380,412L378,410L371,407L370,403L375,400L375,395L372,389L373,386L377,384L375,380L371,379L366,378L364,376L362,377L362,376L361,378L355,381L357,382L353,390L349,393L348,396L345,398L342,398L338,392L332,392L329,394L330,400L331,400L331,403L328,403L326,405L323,404L315,406L310,413L309,416L312,418L312,417L317,415L319,419L317,432L314,434L312,433L306,433L307,441L303,447L302,451L298,454L296,456L291,455L285,460L281,466L284,469L284,472L282,473L281,475L281,476L281,479L283,484L283,486L278,490L277,489L273,491L274,498L272,504L275,505L280,512L279,517L276,517L274,522L273,521L268,523L266,528L269,530L268,533L261,536L258,538L263,542L265,546L268,546L276,542L284,539L288,540L295,547L296,551L295,554L301,567L304,567L302,571L300,571L297,574L297,577L299,582L301,585L303,585L310,591L318,582L320,589L328,593L332,592L331,594L329,595L328,597L327,603L330,603L333,598L335,597L334,595L343,591L345,586L346,585L345,584L343,582L346,579L347,570L348,569L346,566L347,564L345,563L344,558L342,559L340,552L340,544L341,545L339,538L336,537L344,530L347,532L350,529L358,528L361,529L365,533L371,525L370,524L370,519L371,518L380,518L380,515L385,511L385,507L386,501L391,501L396,500L400,497L404,490L404,489L404,489L404,486L403,483L404,474L400,473L397,475L398,477L397,478L393,478L393,474L394,472L396,467L395,463L397,459L400,458L403,452L399,448L398,450L396,446L402,446L401,442L402,440L406,439L408,441L411,440L412,438L411,436L408,435L409,430L407,426L409,426L411,428L412,424L409,420L403,418L401,412L397,412L395,410L393,406L393,403L395,402L392,401Z "
|
||||
data-fips="GM05"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Hessen"
|
||||
data-p="HE"/><path
|
||||
d="M305,220L301,219L302,222L308,224L311,230L314,234L314,237L318,236L321,238L324,238L327,239L330,236L331,233L329,230L330,227L327,225L325,228L320,225L318,225L305,220Z M302,181L305,186L305,187L304,190L304,190L307,192L308,191L309,188L308,183L308,181L302,180L302,181Z "
|
||||
data-fips="GM03"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Bremen"
|
||||
data-p="HB"/><path
|
||||
d="M196,184L199,180L192,181L192,184L196,184Z M217,173L214,172L206,173L204,174L217,173Z M232,170L232,169L225,169L222,169L219,171L222,172L229,171L232,170Z M237,169L237,170L237,169L237,169Z M249,167L248,166L240,166L240,169L242,169L242,167L249,167Z M259,164L260,164L255,163L252,164L254,166L259,164Z M302,180L308,181L308,183L309,188L308,191L307,192L304,190L303,191L301,197L301,206L300,196L304,187L302,186L297,185L288,180L286,183L285,186L286,190L288,189L290,191L290,194L287,201L284,201L280,197L276,196L275,192L278,191L281,188L281,187L278,185L279,183L274,178L272,175L273,171L268,170L250,172L241,174L239,172L230,173L225,175L217,183L217,185L220,187L218,190L215,190L213,195L213,204L213,207L216,208L229,209L232,210L232,211L230,210L226,210L225,212L222,228L222,232L223,242L221,249L216,257L214,263L213,278L212,280L206,279L202,278L197,278L193,284L191,288L191,291L193,296L206,299L209,297L213,303L213,310L212,318L212,319L218,316L226,316L229,315L233,312L235,312L244,305L245,305L246,299L248,295L252,296L254,301L260,305L266,305L270,311L267,313L269,315L266,322L268,324L273,325L271,330L267,331L265,333L267,337L269,338L273,336L279,336L286,331L288,329L297,330L298,329L302,323L300,321L299,308L298,306L292,302L290,297L294,298L298,298L299,296L300,294L311,290L315,294L316,302L322,303L327,302L332,297L334,294L339,292L341,301L338,307L334,308L332,315L338,318L336,322L333,324L334,328L342,328L343,331L345,332L345,336L346,340L344,343L348,344L349,343L352,345L351,348L354,350L355,352L354,356L363,355L362,357L362,359L362,363L359,368L359,377L362,376L362,377L364,376L366,378L371,379L375,380L377,384L373,386L372,389L375,395L375,400L370,403L371,407L378,410L380,412L381,412L382,407L380,405L385,401L387,401L389,403L390,402L389,400L392,401L395,402L398,400L407,397L416,390L416,389L420,386L421,381L424,380L429,384L438,383L437,377L440,375L438,372L438,367L433,361L432,356L433,354L436,350L434,345L436,343L432,341L431,338L435,337L436,334L440,333L448,333L454,328L456,327L460,323L458,318L462,314L457,308L460,302L460,299L458,298L451,291L452,288L455,288L452,282L452,275L451,276L447,273L445,268L442,265L439,259L439,255L441,253L446,253L451,251L454,246L466,247L476,246L483,242L483,237L486,235L487,231L484,230L480,228L479,228L474,230L473,230L473,230L472,229L470,227L468,223L464,223L460,220L458,221L454,221L447,215L440,210L438,208L436,207L433,201L431,201L427,201L425,202L423,201L414,196L412,196L410,196L408,196L402,199L396,194L393,195L391,197L388,198L382,197L380,195L376,185L372,184L365,181L360,174L359,171L354,166L348,156L346,154L337,154L332,156L331,157L329,157L322,158L317,157L313,154L311,153L307,153L304,158L302,164L300,170L300,175L301,179L302,180Z M302,222L301,219L305,220L318,225L320,225L325,228L327,225L330,227L329,230L331,233L330,236L327,239L324,238L321,238L318,236L314,237L314,234L311,230L308,224L302,222Z "
|
||||
data-fips="GM06"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Niedersachsen"
|
||||
data-p="NI"/><path
|
||||
d="M542,426L541,430L543,433L539,439L539,440L523,438L516,433L510,434L509,434L506,429L505,427L503,426L495,427L493,427L490,427L488,426L488,421L482,416L488,412L489,409L483,401L473,398L470,398L460,397L458,396L458,392L456,388L456,386L454,382L456,379L452,376L448,375L441,376L440,375L437,377L438,383L429,384L424,380L421,381L420,386L416,389L416,390L407,397L398,400L395,402L393,403L393,406L395,410L397,412L401,412L403,418L409,420L412,424L411,428L409,426L407,426L409,430L408,435L411,436L412,438L411,440L408,441L406,439L402,440L401,442L402,446L396,446L398,450L399,448L403,452L400,458L397,459L395,463L396,467L394,472L393,474L393,478L397,478L398,477L397,475L400,473L404,474L403,483L404,486L404,489L404,489L407,485L409,486L414,486L416,489L421,491L423,495L426,498L427,500L430,500L433,504L436,504L440,510L440,513L441,517L444,517L448,518L448,515L455,515L455,512L450,509L447,507L447,503L450,503L451,500L457,499L458,500L464,503L470,503L471,502L475,505L474,507L478,511L479,509L481,510L482,507L482,506L483,500L482,499L481,493L482,489L485,488L486,485L492,486L491,488L492,493L498,498L505,498L512,496L516,495L518,495L521,495L523,494L522,493L524,491L525,487L524,485L527,481L530,481L534,478L537,478L538,474L539,472L544,471L546,469L548,466L545,465L544,462L542,461L545,457L543,454L550,450L553,450L555,447L558,445L564,445L567,443L564,437L560,435L555,427L545,425L541,425L542,426Z "
|
||||
data-fips="GM15"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Thüringen"
|
||||
data-p="TH"/><path
|
||||
d="M410,194L405,190L404,188L401,186L401,182L403,180L402,173L400,171L400,166L398,168L394,168L393,172L391,172L390,174L386,175L379,181L377,177L376,177L375,183L377,183L380,184L380,186L380,186L376,185L380,195L382,197L388,198L391,197L393,195L396,194L402,199L408,196L410,196L410,194Z "
|
||||
data-fips="GM04"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Hamburg"
|
||||
data-p="HH"/><path
|
||||
d="M322,94L326,90L326,89L320,89L318,91L322,94Z M460,88L457,85L452,83L449,84L447,86L446,90L446,91L451,91L452,95L457,94L464,95L460,88Z M310,91L311,85L305,90L308,92L310,91Z M291,70L289,71L287,75L291,79L293,77L290,72L291,70Z M304,72L305,68L302,66L296,66L293,70L299,72L304,72Z M375,183L376,177L377,177L379,181L386,175L390,174L391,172L393,172L394,168L398,168L400,166L400,171L402,173L403,180L401,182L401,186L404,188L405,190L410,194L410,196L412,196L414,196L423,201L425,202L427,201L428,200L430,192L432,192L433,190L436,189L439,186L440,183L441,181L444,180L446,183L447,181L446,174L447,172L446,169L438,164L435,163L435,158L434,153L434,151L442,146L443,147L445,146L443,145L442,141L442,141L435,137L433,133L436,128L439,128L444,123L451,118L452,108L450,101L452,100L454,98L452,97L448,100L447,98L442,99L433,106L428,106L423,101L413,98L406,94L400,98L399,102L397,106L396,107L398,94L399,93L394,89L380,93L378,91L385,89L387,87L389,72L386,71L382,72L387,69L385,66L384,63L380,60L380,62L375,63L375,61L368,58L365,58L362,57L362,53L358,57L354,59L342,60L341,60L339,55L327,53L322,51L310,52L308,54L307,57L312,68L315,71L320,79L318,81L328,88L329,90L329,93L324,98L314,100L310,101L308,101L307,104L311,105L306,106L306,107L307,112L309,114L313,112L323,111L322,112L327,109L324,114L321,115L320,118L319,121L320,126L321,129L325,126L327,126L331,131L330,138L325,137L320,138L325,147L329,151L333,151L336,152L343,152L351,157L354,157L355,163L356,166L362,169L363,177L365,179L372,183L375,183Z M293,52L291,50L292,41L294,39L294,37L297,36L294,35L292,38L287,52L286,66L288,64L288,55L296,55L299,52L307,53L308,52L295,52L293,52Z "
|
||||
data-fips="GM10"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Schleswig-Holstein"
|
||||
data-p="SH"/><path
|
||||
d="M169,511L163,512L161,517L158,518L155,520L154,526L152,528L151,533L151,539L154,548L156,549L158,554L164,559L165,559L168,561L176,564L175,572L175,573L171,576L170,579L166,585L166,590L166,591L175,590L183,590L187,588L190,588L199,584L204,581L208,581L213,583L217,583L223,587L226,586L226,588L224,599L225,601L228,605L233,607L233,610L232,612L229,619L227,620L230,626L232,627L234,627L235,628L239,629L239,631L241,634L247,637L257,640L258,639L264,641L269,640L280,646L286,647L287,648L287,648L289,647L292,643L297,632L299,622L305,614L306,605L306,599L302,598L303,594L300,588L301,585L299,582L297,577L297,574L300,571L302,571L304,567L301,567L295,554L296,551L295,547L288,540L284,539L276,542L268,546L265,546L263,542L258,538L261,536L268,533L269,530L266,528L268,523L273,521L274,522L276,517L279,517L280,512L275,505L272,504L274,498L273,491L277,489L278,490L283,486L283,484L281,479L281,476L281,475L280,474L276,474L276,472L272,463L271,460L269,460L265,456L263,455L264,451L259,450L257,453L258,460L256,459L252,462L254,465L249,468L247,470L234,474L233,479L231,480L227,481L224,481L221,480L219,483L215,485L212,484L209,487L206,488L202,494L202,496L199,497L197,494L194,497L193,499L195,501L196,507L191,509L186,508L186,508L182,506L179,506L174,509L171,504L170,506L172,509L169,511L169,511Z "
|
||||
data-fips="GM08"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Rheinland-Pfalz"
|
||||
data-p="RP"/><path
|
||||
d="M165,594L165,597L169,597L175,600L177,604L180,607L179,611L186,619L187,623L188,622L188,626L190,628L195,629L197,627L197,623L198,623L209,626L209,632L211,633L214,630L218,632L226,633L227,632L232,627L232,627L230,626L227,620L229,619L232,612L233,610L233,607L228,605L225,601L224,599L226,588L226,586L223,587L217,583L213,583L208,581L204,581L199,584L190,588L187,588L183,590L175,590L166,591L165,594Z "
|
||||
data-fips="GM09"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Saarland"
|
||||
data-p="SL"/><path
|
||||
d="M404,489L404,490L400,497L396,500L391,501L386,501L385,507L385,511L380,515L380,518L371,518L370,519L370,524L371,525L365,533L361,529L358,528L350,529L347,532L344,530L336,537L339,538L341,545L340,544L340,552L342,559L344,558L345,563L347,564L346,566L348,569L347,570L346,579L343,582L345,584L346,585L346,586L355,585L358,579L366,577L364,570L363,572L362,570L359,569L358,566L361,564L364,564L370,562L374,564L380,566L380,573L386,573L390,569L392,572L393,577L396,580L393,587L399,586L401,593L405,593L408,590L408,588L410,587L410,589L413,594L415,602L412,604L415,610L415,614L413,614L415,619L420,625L422,626L422,629L420,631L423,633L428,637L435,645L437,648L436,650L436,656L436,657L435,661L435,666L437,667L439,670L436,674L436,670L430,672L426,671L425,673L426,676L427,677L429,683L428,687L426,688L424,690L417,694L413,694L410,696L410,698L406,703L407,705L413,715L416,727L418,731L416,744L415,745L416,755L418,760L415,762L418,766L418,770L417,774L416,774L416,776L414,774L410,774L407,776L401,775L399,776L394,780L391,782L387,782L387,783L380,789L384,790L388,790L393,784L398,788L403,789L407,788L410,794L412,793L415,798L414,801L419,805L424,804L425,806L422,814L429,813L433,810L437,804L438,803L441,799L440,792L439,792L439,787L438,784L441,783L443,787L446,788L451,784L460,787L461,788L468,786L471,788L469,791L472,793L476,796L476,800L477,800L484,800L490,796L493,796L493,799L496,798L499,795L505,793L503,791L506,787L511,787L516,786L521,778L524,778L530,778L533,779L535,776L541,775L557,774L559,772L559,767L557,765L559,762L561,763L560,766L572,764L576,769L578,770L583,770L585,767L591,765L596,767L600,771L599,772L598,777L602,779L606,782L609,784L614,784L616,782L617,765L614,760L606,760L605,759L607,754L611,746L609,744L606,739L603,736L599,730L594,726L592,722L601,711L604,710L609,705L617,701L626,699L628,697L634,691L636,682L637,678L636,675L636,671L640,670L647,671L651,674L654,675L654,672L659,667L659,657L657,655L657,649L653,643L651,640L648,640L645,637L643,633L639,631L636,632L635,635L629,631L628,630L627,625L620,619L616,619L605,607L602,604L601,601L595,598L593,597L591,599L587,599L585,597L582,593L577,589L576,588L575,581L572,580L565,566L561,564L558,560L558,558L562,555L562,550L563,550L565,542L561,540L562,536L547,529L546,526L543,524L542,519L539,513L536,511L537,508L536,505L534,503L536,503L528,500L528,496L524,493L523,494L521,495L518,495L516,495L512,496L505,498L498,498L492,493L491,488L492,486L486,485L485,488L482,489L481,493L482,499L483,500L482,506L482,507L481,510L479,509L478,511L474,507L475,505L471,502L470,503L464,503L458,500L457,499L451,500L450,503L447,503L447,507L450,509L455,512L455,515L448,515L448,518L444,517L441,517L440,513L440,510L436,504L433,504L430,500L427,500L426,498L423,495L421,491L416,489L414,486L409,486L407,485L404,489Z "
|
||||
data-fips="GM02"
|
||||
data-fips-="GM15"
|
||||
data-iso3="DEU"
|
||||
data-name="Bayern"
|
||||
data-p="BY"/><path
|
||||
d="M606,263L594,265L590,266L590,270L586,270L585,277L587,279L584,282L584,286L584,288L587,290L591,287L594,288L598,288L602,290L604,290L607,288L610,287L617,289L618,293L621,286L622,285L618,278L615,278L616,273L611,271L606,263Z "
|
||||
data-fips="GM16"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Berlin"
|
||||
data-p="BE"/><path
|
||||
d="M589,366L593,362L594,360L592,355L592,352L594,347L597,344L593,343L586,345L577,340L574,340L560,332L557,335L550,332L545,332L542,329L541,327L531,316L531,310L533,309L530,304L531,297L532,290L532,289L534,281L531,282L530,280L525,281L526,279L523,279L525,276L525,272L527,270L529,264L528,263L526,255L528,253L528,252L527,248L524,246L521,247L520,245L515,245L507,244L503,242L499,235L496,237L493,234L490,233L490,230L487,231L486,235L483,237L483,242L476,246L466,247L454,246L451,251L446,253L441,253L439,255L439,259L442,265L445,268L447,273L451,276L452,275L452,282L455,288L452,288L451,291L458,298L460,299L460,302L457,308L462,314L458,318L460,323L456,327L454,328L448,333L440,333L436,334L435,337L431,338L432,341L436,343L434,345L436,350L433,354L432,356L433,361L438,367L438,372L440,375L441,376L448,375L452,376L456,379L454,382L456,386L456,388L458,392L458,396L460,397L470,398L473,398L483,401L489,409L488,412L482,416L488,421L488,426L490,427L493,427L495,427L503,426L505,427L506,429L509,434L510,434L516,433L523,438L539,440L539,439L543,433L541,430L542,426L541,425L539,425L536,421L536,417L534,416L534,410L533,409L532,403L535,402L533,391L534,387L534,381L536,379L540,378L544,376L549,376L549,373L555,372L556,373L564,371L566,368L570,369L575,364L582,368L586,368L588,368L589,366Z "
|
||||
data-fips="GM14"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Sachsen-Anhalt"
|
||||
data-p="ST"/><path
|
||||
d="M541,425L545,425L555,427L560,435L564,437L567,443L564,445L558,445L555,447L553,450L550,450L543,454L545,457L542,461L544,462L545,465L548,466L546,469L544,471L539,472L538,474L537,478L534,478L530,481L527,481L524,485L525,487L524,491L522,493L523,494L524,493L528,496L528,500L536,503L539,503L542,508L545,509L545,510L550,518L551,508L553,505L555,501L559,499L559,496L561,494L574,492L577,488L581,487L587,490L590,490L592,485L593,481L599,480L602,480L604,477L606,471L610,472L611,471L612,469L615,466L617,468L622,466L626,457L629,456L634,456L639,454L643,454L646,452L646,448L652,445L655,445L665,439L667,436L669,435L674,435L676,433L674,430L672,430L670,427L667,426L668,422L671,419L675,422L680,421L681,419L682,421L688,424L687,430L687,431L692,432L691,435L691,437L694,438L697,440L699,440L702,439L703,433L709,421L711,413L711,409L712,407L712,400L713,392L708,386L706,375L702,372L696,370L692,369L691,368L690,367L685,366L683,366L678,367L670,372L668,372L660,370L656,372L653,374L651,377L650,382L647,388L645,390L634,392L624,392L618,391L614,387L611,386L598,390L597,391L598,380L597,376L595,376L593,371L592,371L588,369L588,368L586,368L582,368L575,364L570,369L566,368L564,371L556,373L555,372L549,373L549,376L544,376L540,378L536,379L534,381L534,387L533,391L535,402L532,403L533,409L534,410L534,416L536,417L536,421L539,425L541,425Z "
|
||||
data-fips="GM13"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Sachsen"
|
||||
data-p="SN"/><path
|
||||
d="M507,206L507,206L503,209L500,210L502,212L497,213L491,210L487,212L484,216L485,220L484,224L482,224L479,222L477,222L476,225L469,225L470,227L472,229L473,230L473,230L474,230L479,228L480,228L484,230L487,231L490,230L490,233L493,234L496,237L499,235L503,242L507,244L515,245L520,245L521,247L524,246L527,248L528,252L528,253L526,255L528,263L529,264L527,270L525,272L525,276L523,279L526,279L525,281L530,280L531,282L534,281L532,289L532,290L531,297L530,304L533,309L531,310L531,316L541,327L542,329L545,332L550,332L557,335L560,332L574,340L577,340L586,345L593,343L597,344L594,347L592,352L592,355L594,360L593,362L589,366L588,368L588,369L592,371L593,371L595,376L597,376L598,380L597,391L598,390L611,386L614,387L618,391L624,392L634,392L645,390L647,388L650,382L651,377L653,374L656,372L660,370L668,372L670,372L678,367L683,366L685,366L690,367L690,366L692,360L692,358L690,353L687,351L684,347L684,345L680,341L681,337L684,334L686,328L687,318L687,315L683,309L684,303L683,302L684,297L683,296L677,294L676,293L676,291L672,284L672,280L674,277L676,272L675,270L676,264L670,258L666,257L659,249L650,244L648,242L642,239L644,236L643,229L645,226L649,224L652,220L656,210L655,205L658,197L655,195L654,191L654,189L650,192L646,198L637,197L637,195L642,191L644,188L644,181L637,181L635,183L629,182L625,183L621,177L621,175L618,174L616,172L616,174L618,178L616,178L612,179L609,182L606,186L604,186L602,189L600,196L595,201L590,200L586,202L585,206L584,206L581,203L578,207L572,213L569,213L569,211L563,212L562,211L557,211L556,209L551,208L548,206L542,205L537,205L531,201L524,199L523,197L518,197L515,198L512,204L509,206L508,206L507,206Z M606,263L611,271L616,273L615,278L618,278L622,285L621,286L618,293L617,289L610,287L607,288L604,290L602,290L598,288L594,288L591,287L587,290L584,288L584,286L584,282L587,279L585,277L586,270L590,270L590,266L594,265L606,263Z "
|
||||
data-fips="GM11"
|
||||
data-fips-="GM16"
|
||||
data-iso3="DEU"
|
||||
data-name="Brandenburg"
|
||||
data-p="BE"/><path
|
||||
d="M477,133L475,132L471,135L470,138L473,139L477,133Z M479,130L483,125L479,127L479,130Z M623,118L617,115L615,114L612,109L611,108L609,111L613,118L611,124L616,121L616,125L618,124L621,119L622,119L626,123L627,129L624,129L619,126L619,128L622,132L619,137L617,138L616,141L622,141L628,137L629,137L637,136L636,129L625,119L623,118Z M442,141L443,145L445,146L443,147L442,146L434,151L434,153L435,158L435,163L438,164L446,169L447,172L446,174L447,181L446,183L444,180L441,181L440,183L439,186L436,189L433,190L432,192L430,192L428,200L427,201L431,201L433,201L436,207L438,208L440,210L447,215L454,221L458,221L460,220L464,223L468,223L469,225L476,225L477,222L479,222L481,223L482,224L484,224L485,220L484,216L487,212L491,210L497,213L502,212L500,210L503,209L507,206L508,206L509,206L512,204L515,198L518,197L523,197L524,199L531,201L537,205L542,205L548,206L551,208L556,209L557,211L562,211L563,212L569,211L569,213L572,213L578,207L581,203L584,206L585,206L586,202L590,200L595,201L600,196L602,189L604,186L606,186L609,182L612,179L616,178L618,178L616,174L616,172L618,174L621,175L621,177L625,183L629,182L635,183L637,181L644,181L644,188L642,191L637,195L637,197L646,198L650,192L654,189L652,184L651,179L647,172L646,170L646,164L642,154L640,153L643,150L640,148L638,150L633,150L629,149L626,148L618,142L615,141L615,138L619,134L619,131L617,130L615,127L610,123L612,115L605,111L606,109L600,113L593,115L593,118L592,118L588,111L585,110L583,109L581,105L574,101L570,98L568,96L568,91L565,90L564,87L561,87L557,91L554,95L551,94L550,91L547,93L545,91L534,98L529,105L529,107L527,105L527,105L526,101L529,98L529,96L531,93L533,93L535,94L536,93L539,92L542,89L549,89L558,87L557,86L554,86L552,85L538,86L533,84L530,92L522,105L515,111L514,117L512,118L511,122L511,114L509,116L495,119L490,119L486,121L481,131L477,135L475,145L472,142L469,142L468,140L465,142L462,142L462,138L458,135L451,136L446,139L443,141L442,141Z M570,70L570,70L570,70L570,70Z M570,70L570,69L567,69L566,79L566,83L569,69L570,70Z M583,63L583,59L575,62L574,65L578,64L576,72L577,72L582,67L587,72L592,70L590,72L591,79L586,77L586,75L584,74L582,76L582,73L583,70L579,73L579,76L576,73L571,74L573,78L575,77L575,79L578,80L572,86L574,85L577,89L578,90L573,91L570,95L575,99L576,101L579,103L583,100L582,103L584,104L589,105L588,101L585,102L587,99L592,93L603,91L602,94L605,93L601,96L605,96L606,98L608,92L606,91L602,86L598,86L596,80L600,75L601,73L600,70L598,68L596,68L588,70L586,69L583,66L583,63Z "
|
||||
data-fips="GM12"
|
||||
data-fips-=""
|
||||
data-iso3="DEU"
|
||||
data-name="Mecklenburg-Vorpommern"
|
||||
data-p="MV"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 37 KiB |
23
Gemfile
Normal file
@@ -0,0 +1,23 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
gem "jekyll", "~> 3.7.3"
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-paginate"
|
||||
gem "jekyll-sitemap"
|
||||
gem "jekyll-redirect-from"
|
||||
end
|
||||
|
||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
||||
286
Gemfile.lock
Normal file
@@ -0,0 +1,286 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (4.2.10)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.11.1)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.17.13)
|
||||
ruby-enum (~> 0.5)
|
||||
concurrent-ruby (1.1.10)
|
||||
dnsruby (1.61.9)
|
||||
simpleidn (~> 0.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
eventmachine (1.2.7)
|
||||
execjs (2.8.1)
|
||||
faraday (1.10.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.3)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
ffi (1.15.5)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (3.0.1)
|
||||
github-pages (197)
|
||||
activesupport (= 4.2.10)
|
||||
github-pages-health-check (= 1.16.1)
|
||||
jekyll (= 3.7.4)
|
||||
jekyll-avatar (= 0.6.0)
|
||||
jekyll-coffeescript (= 1.1.1)
|
||||
jekyll-commonmark-ghpages (= 0.1.5)
|
||||
jekyll-default-layout (= 0.1.4)
|
||||
jekyll-feed (= 0.11.0)
|
||||
jekyll-gist (= 1.5.0)
|
||||
jekyll-github-metadata (= 2.12.1)
|
||||
jekyll-mentions (= 1.4.1)
|
||||
jekyll-optional-front-matter (= 0.3.0)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-readme-index (= 0.2.0)
|
||||
jekyll-redirect-from (= 0.14.0)
|
||||
jekyll-relative-links (= 0.6.0)
|
||||
jekyll-remote-theme (= 0.3.1)
|
||||
jekyll-sass-converter (= 1.5.2)
|
||||
jekyll-seo-tag (= 2.5.0)
|
||||
jekyll-sitemap (= 1.2.0)
|
||||
jekyll-swiss (= 0.4.0)
|
||||
jekyll-theme-architect (= 0.1.1)
|
||||
jekyll-theme-cayman (= 0.1.1)
|
||||
jekyll-theme-dinky (= 0.1.1)
|
||||
jekyll-theme-hacker (= 0.1.1)
|
||||
jekyll-theme-leap-day (= 0.1.1)
|
||||
jekyll-theme-merlot (= 0.1.1)
|
||||
jekyll-theme-midnight (= 0.1.1)
|
||||
jekyll-theme-minimal (= 0.1.1)
|
||||
jekyll-theme-modernist (= 0.1.1)
|
||||
jekyll-theme-primer (= 0.5.3)
|
||||
jekyll-theme-slate (= 0.1.1)
|
||||
jekyll-theme-tactile (= 0.1.1)
|
||||
jekyll-theme-time-machine (= 0.1.1)
|
||||
jekyll-titles-from-headings (= 0.5.1)
|
||||
jemoji (= 0.10.2)
|
||||
kramdown (= 1.17.0)
|
||||
liquid (= 4.0.0)
|
||||
listen (= 3.1.5)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.5.0)
|
||||
nokogiri (>= 1.8.5, < 2.0)
|
||||
rouge (= 2.2.1)
|
||||
terminal-table (~> 1.4)
|
||||
github-pages-health-check (1.16.1)
|
||||
addressable (~> 2.3)
|
||||
dnsruby (~> 1.60)
|
||||
octokit (~> 4.0)
|
||||
public_suffix (~> 3.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.14.1)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.7.4)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-avatar (0.6.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-coffeescript (1.1.1)
|
||||
coffee-script (~> 2.2)
|
||||
coffee-script-source (~> 1.11.1)
|
||||
jekyll-commonmark (1.3.1)
|
||||
commonmarker (~> 0.14)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-commonmark-ghpages (0.1.5)
|
||||
commonmarker (~> 0.17.6)
|
||||
jekyll-commonmark (~> 1)
|
||||
rouge (~> 2)
|
||||
jekyll-default-layout (0.1.4)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-feed (0.11.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-gist (1.5.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.12.1)
|
||||
jekyll (~> 3.4)
|
||||
octokit (~> 4.0, != 4.4.0)
|
||||
jekyll-mentions (1.4.1)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-optional-front-matter (0.3.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-readme-index (0.2.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-redirect-from (0.14.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-relative-links (0.6.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-remote-theme (0.3.1)
|
||||
jekyll (~> 3.5)
|
||||
rubyzip (>= 1.2.1, < 3.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.5.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sitemap (1.2.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-swiss (0.4.0)
|
||||
jekyll-theme-architect (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-cayman (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-dinky (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-hacker (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-leap-day (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-merlot (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-midnight (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-minimal (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-modernist (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-primer (0.5.3)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-github-metadata (~> 2.9)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-slate (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-tactile (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-theme-time-machine (0.1.1)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-seo-tag (~> 2.0)
|
||||
jekyll-titles-from-headings (0.5.1)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
jemoji (0.10.2)
|
||||
gemoji (~> 3.0)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (~> 3.0)
|
||||
kramdown (1.17.0)
|
||||
liquid (4.0.0)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.8.0)
|
||||
minima (2.5.0)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.15.0)
|
||||
multipart-post (2.1.1)
|
||||
nokogiri (1.13.4)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.13.4-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
octokit (4.22.0)
|
||||
faraday (>= 0.9)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (3.1.1)
|
||||
racc (1.6.0)
|
||||
rb-fsevent (0.11.1)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rouge (2.2.1)
|
||||
ruby-enum (0.9.0)
|
||||
i18n
|
||||
ruby2_keywords (0.0.5)
|
||||
ruby_dep (1.5.0)
|
||||
rubyzip (2.3.2)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sawyer (0.8.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (> 0.8, < 2.0)
|
||||
simpleidn (0.2.1)
|
||||
unf (~> 0.1.4)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thread_safe (0.3.6)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.9)
|
||||
thread_safe (~> 0.1)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.1)
|
||||
unicode-display_width (1.8.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
github-pages
|
||||
jekyll (~> 3.7.3)
|
||||
jekyll-paginate
|
||||
jekyll-redirect-from
|
||||
jekyll-sitemap
|
||||
tzinfo-data
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.24
|
||||
14
README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# kartograph.org
|
||||
|
||||
This is the source of the website running at http://kartograph.org.
|
||||
|
||||
This is a [Jekyll](http://jekyllrb.com/) website, so you have to
|
||||
[install](https://github.com/mojombo/jekyll/wiki/Install/) and
|
||||
run Jekyll in the root directory.
|
||||
|
||||
It will generate a folder "_site" which contains the fully rendered website.
|
||||
Make this your document root and it should look fine.
|
||||
|
||||
You can also run it without a webserver by running `jekyll --server`
|
||||
from the root directory and going to
|
||||
[http://localhost:4000](http://localhost:4000).
|
||||
4
_config.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
markdown: rdiscount
|
||||
pygments: true
|
||||
auto: true
|
||||
title: Kartograph
|
||||
41
_layouts/core.html
Normal file
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>{{ page.title }}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<link rel="stylesheet" href="/css/bootstrap.css" type="text/css" />
|
||||
<link rel="stylesheet" href="/css/k.css" type="text/css" />
|
||||
<!-- Le fav and touch icons -->
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
|
||||
{% for style in page.styles %}
|
||||
<link rel="stylesheet" href="{{ style }}" type="text/css" />
|
||||
{% endfor %}
|
||||
<script type="text/javascript" src="/js/jquery-1.10.2.min.js"></script>
|
||||
<script type="text/javascript" src="/js/raphael-2.1.0.min.js"></script>
|
||||
<script type="text/javascript" src="/js/kartograph.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
{{ content }}
|
||||
|
||||
<!-- Piwik -->
|
||||
<script type="text/javascript">
|
||||
var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.kartograph.org/" : "http://piwik.kartograph.org/");
|
||||
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script><script type="text/javascript">
|
||||
try {
|
||||
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 14);
|
||||
piwikTracker.trackPageView();
|
||||
piwikTracker.enableLinkTracking();
|
||||
} catch( err ) {}
|
||||
</script><noscript><p><img src="http://piwik.kartograph.org/piwik.php?idsite=14" style="border:0" alt="" /></p></noscript>
|
||||
<!-- End Piwik Tracking Code -->
|
||||
</body>
|
||||
</html>
|
||||
67
_layouts/default.html
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
layout: core
|
||||
---
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="span6 offset6">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span3 sidebar">
|
||||
<div class="head">
|
||||
<p class="tagline">A simple and lightweight framework for creating beautiful, interactive vector maps.</p>
|
||||
</div>
|
||||
|
||||
{% if page.toc %}
|
||||
{% if page.toc == true %}
|
||||
<div class="toc">
|
||||
<h3>Table of Contents</h3>
|
||||
</div>
|
||||
{% else %}
|
||||
{% for tocinfo in page.toc %}
|
||||
<div class="toc">
|
||||
<h3>{{ tocinfo[0] }}</h3>
|
||||
|
||||
<ul>
|
||||
{% for l in tocinfo[1] %}
|
||||
{% if l[1]['_'] %}
|
||||
<li><a href="{{ l[0] }}">{{ l[1]['_'] }}</a>
|
||||
<ul>
|
||||
{% for s in l[1] %}
|
||||
{% if s[0] != '_' %}
|
||||
<li><a href="{{ s[0] }}">{{ s[1] }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% else %}
|
||||
{% capture longurl %}{{ l[0] | append:'/index.html' }}{% endcapture %}
|
||||
<li{% if longurl == page.url %} class="active"{% endif %}><a href="{{ l[0] }}">{{ l[1] }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="span9">
|
||||
{% if page.headline %}
|
||||
<div class="hero-unit"{% if page.headbg %} style="background:url({{page.headbg}})" {% endif %}>
|
||||
<h1>{{ page.headline }}</h1>
|
||||
<p>{{ page.tagline }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="content{% if page.class %} {{ page.class }}{% endif %}">
|
||||
{{ content }}
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012-2014. Created by <a href="http://driven-by-data.net">Gregor Aisch</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
119
_layouts/docs.html
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
class: docs
|
||||
layout: default
|
||||
toc: true
|
||||
styles: ['/js/highlight/styles/github.css']
|
||||
---
|
||||
<script type="text/javascript" src="/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="/js/highlight/highlight.pack.js"></script>
|
||||
|
||||
<div class="alert">
|
||||
Writing documentation (and keeping it up to date) is a lot of work. <b>You can help</b> improving it by <a href="https://github.com/kartograph/kartograph.org/issues/new">submitting any bug</a> you encounter, or, even better, directly patching
|
||||
<a href="https://github.com/kartograph/kartograph.org/blob/master{{ page.url | replace:'html','md' }}">this page on Github</a>. Thanks!
|
||||
</div>
|
||||
|
||||
{{ content }}
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
var toc = $('.toc');
|
||||
var ul = $('<ul></ul>'),
|
||||
parent = ul;
|
||||
|
||||
toc.append(ul);
|
||||
|
||||
$('.docs h2, .docs h3').each(function(i, el) {
|
||||
var h = $(el),
|
||||
t = h.text(),
|
||||
id = t.toLowerCase().replace(/[\s\.\:]+/g, '-'),
|
||||
li = $('<li><a href="#'+id+'">'+t+'</a></li>');
|
||||
|
||||
h.append('<a class="headerlink" id="'+id+'" href="#'+id+'">¶</a>');
|
||||
if (el.nodeName.toLowerCase() == 'h2') {
|
||||
// parent = $('<ul></ul>');
|
||||
// li.append(parent);
|
||||
$(el).data('id', id);
|
||||
$(li).data('id', id);
|
||||
ul.append(li);
|
||||
} else {
|
||||
// parent.append(li);
|
||||
}
|
||||
});
|
||||
|
||||
$('.docs p').each(function(i, el) {
|
||||
el = $(el);
|
||||
if (el.html().substr(0,7) == 'Source:') {
|
||||
el.addClass('source');
|
||||
}
|
||||
});
|
||||
|
||||
if (location.hash[0] == '#' && $(location.hash)) {
|
||||
$(location.hash).parent()[0].scrollIntoView();
|
||||
}
|
||||
|
||||
var tocTop = $('.toc').offset().top, tocTimeout;
|
||||
|
||||
function moveTOC() {
|
||||
if (window.innerWidth < 780) return;
|
||||
var sy = $(document).scrollTop(),
|
||||
top = sy > 1000 ? sy - tocTop + 30 : 0;
|
||||
$('.toc').css({
|
||||
position: 'relative',
|
||||
top: top
|
||||
});
|
||||
}
|
||||
|
||||
function highlightSection() {
|
||||
$('.toc li').removeClass('active');
|
||||
var m = null, sy = $(document).scrollTop();
|
||||
$('.content h2').each(function(i, el) {
|
||||
if (Math.round($(el).offset().top) <= sy) m = $(el);
|
||||
});
|
||||
$('.toc li').each(function(i, el) {
|
||||
if ($(el).data('id') == m.data('id')) {
|
||||
$(el).addClass('active');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(window).scroll(function() {
|
||||
if (tocTimeout) clearTimeout(tocTimeout);
|
||||
if ($(document).scrollTop() < 1000) {
|
||||
$('.toc').css('top', 0);
|
||||
} else {
|
||||
tocTimeout = setTimeout(moveTOC, 3000);
|
||||
}
|
||||
highlightSection();
|
||||
});
|
||||
|
||||
moveTOC();
|
||||
highlightSection();
|
||||
|
||||
});
|
||||
|
||||
$('pre code').each(function(i, e) {
|
||||
var code = $(e).html().trim(),
|
||||
code2 = code.replace(/\s/g, ''),
|
||||
last = code2.substr(code2.length-1, 1);
|
||||
|
||||
if (code.substr(0,1) == '"' && (last == '}' || last == ']')) {
|
||||
e.className = 'json';
|
||||
$(e).html('{'+code+'}');
|
||||
hljs.highlightBlock(e);
|
||||
var i = $(e).html()
|
||||
$(e).html(i.substr(1, i.length-2));
|
||||
return;
|
||||
} else if (last == ';') {
|
||||
e.className = 'javascript';
|
||||
}
|
||||
|
||||
hljs.highlightBlock(e)
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
13
_layouts/showcase-overview.html
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<ul class="thumbnails">
|
||||
{% for item in page.showcase %}
|
||||
<li class="span3">
|
||||
<a href="/showcase/{{ item }}/" class="thumbnail">
|
||||
<img src="/showcase/{{ item }}/t.png" alt="{{ item }}" />
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
48
_layouts/showcase.html
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
layout: default
|
||||
styles: ['/js/highlight/styles/github.css']
|
||||
toctitle: Showcases
|
||||
toc:
|
||||
Showcases:
|
||||
- ['/showcase/animated-symbols', 'Animated Symbols']
|
||||
- ['/showcase/italia', 'La Bella Italia']
|
||||
- ['/showcase/choropleth', 'Choropleth Maps']
|
||||
- ['/showcase/symbols', 'Symbol Maps']
|
||||
- ['/showcase/clustering', 'Clustering Map Symbols']
|
||||
- ['/showcase/charts', 'Chart Maps']
|
||||
- ['/showcase/dotgrid', 'Dot-grid Maps']
|
||||
- ['/showcase/3d', '3D-Projections']
|
||||
- ['/showcase/projections', 'Map Projections']
|
||||
- ['/showcase/eastcoast', 'High-res vector mapping']
|
||||
---
|
||||
|
||||
|
||||
<h1><small style="float:right; font-size: 12px; font-family:Georgia">(<a href="https://github.com/kartograph/kartograph.org/blob/master{{ page.url }}">view source</a>)</small>{{ page.title }}</h1>
|
||||
|
||||
{{ content }}
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/js/highlight/highlight.pack.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$('pre code').each(function(i, e) {
|
||||
var code = $(e).html().trim(),
|
||||
code2 = code.replace(/\s/g, ''),
|
||||
last = code2.substr(code2.length-1, 1);
|
||||
|
||||
if (code.substr(0,1) == '"' && (last == '}' || last == ']')) {
|
||||
e.className = 'json';
|
||||
$(e).html('{'+code+'}');
|
||||
hljs.highlightBlock(e);
|
||||
var i = $(e).html()
|
||||
$(e).html(i.substr(1, i.length-2));
|
||||
return;
|
||||
} else if (last == ';') {
|
||||
e.className = 'javascript';
|
||||
}
|
||||
|
||||
hljs.highlightBlock(e)
|
||||
});
|
||||
|
||||
</script>
|
||||
3508
css/bootstrap.css
vendored
Executable file
563
css/bootstrap.min.css
vendored
Executable file
37
css/jquery.qtip.css
Normal file
386
css/k.css
Normal file
@@ -0,0 +1,386 @@
|
||||
|
||||
body {
|
||||
font-family: Georgia, serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
background-color: white;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sidebar .tagline {
|
||||
font-style: italic;
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
color: #888;
|
||||
padding: 5px 18% 20px;
|
||||
}
|
||||
|
||||
.sidebar h3 {
|
||||
font-weight: normal;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.nav-tabs.nav-stacked > li > a:hover {
|
||||
border: none!important;
|
||||
}
|
||||
|
||||
.k-menu ul.nav {
|
||||
margin: 30px 0;
|
||||
}
|
||||
|
||||
.k-menu ul.nav li {
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
font-size: 18px;
|
||||
line-height: 20px;
|
||||
margin-bottom: 1ex;
|
||||
}
|
||||
|
||||
.hero-unit h1 {
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.hero-unit p {
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
|
||||
.content i {
|
||||
font-family: Baskerville, Garamond;
|
||||
font-style: italic;
|
||||
font-size: 1.1;
|
||||
}
|
||||
|
||||
.content p, .content li, .content label {
|
||||
font-family: Georgia, serif;
|
||||
font-size: 15px;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.content label.checkbox input {
|
||||
position: relative;
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: none;
|
||||
border: none;
|
||||
margin: 20px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
pre code {
|
||||
padding: 10px!important;
|
||||
background: #F6f6f6!important;
|
||||
}
|
||||
|
||||
p > code {
|
||||
color: #000;
|
||||
padding:2px;
|
||||
margin: 0 3px;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
.content ul, .content ol {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.content li {
|
||||
margin-bottom: 0.4ex;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.sidebar p {
|
||||
color: #555;
|
||||
padding: 0 30px;
|
||||
font-family: Georgia, serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.btn-custom { background-color: hsl(29, 29%, 40%) !important; background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#af8d6e", endColorstr="#836548"); background-image: -khtml-gradient(linear, left top, left bottom, from(#af8d6e), to(#836548)); background-image: -moz-linear-gradient(top, #af8d6e, #836548); background-image: -ms-linear-gradient(top, #af8d6e, #836548); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #af8d6e), color-stop(100%, #836548)); background-image: -webkit-linear-gradient(top, #af8d6e, #836548); background-image: -o-linear-gradient(top, #af8d6e, #836548); background-image: linear-gradient(#af8d6e, #836548); border-color: #836548 #836548 hsl(29, 29%, 36%); color: #fff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.26); -webkit-font-smoothing: antialiased; }
|
||||
|
||||
.btn-github { background-color: hsl(29, 0%, 29%) !important; background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#727272", endColorstr="#494949"); background-image: -khtml-gradient(linear, left top, left bottom, from(#727272), to(#494949)); background-image: -moz-linear-gradient(top, #727272, #494949); background-image: -ms-linear-gradient(top, #727272, #494949); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #727272), color-stop(100%, #494949)); background-image: -webkit-linear-gradient(top, #727272, #494949); background-image: -o-linear-gradient(top, #727272, #494949); background-image: linear-gradient(#727272, #494949); border-color: #494949 #494949 hsl(29, 0%, 25%); color: #fff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.26); -webkit-font-smoothing: antialiased; }
|
||||
|
||||
ul.thumbnails li {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.content h1, .content h2, .content h3,
|
||||
.sidebar h3, .sidebar .tagline
|
||||
{
|
||||
font-family: Garamond, 'Garamond classico', Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif;
|
||||
}
|
||||
|
||||
.content.docs h2 {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.content.docs h3 {
|
||||
margin: 30px 0 20px;
|
||||
font-size: 28px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.content.docs .source {
|
||||
font-size: 13px;
|
||||
text-align: right;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.content.docs .source a {
|
||||
color: #888;
|
||||
border-bottom: 1px dotted #888;
|
||||
|
||||
}
|
||||
|
||||
.toc ul {
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.toc a {
|
||||
color: #68a;
|
||||
border-bottom: 1px dotted #68a;
|
||||
}
|
||||
|
||||
.toc > ul > li > a {
|
||||
border-bottom: 1px solid #68a;
|
||||
}
|
||||
|
||||
.toc > ul > li {
|
||||
list-style: none;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.toc li > ul {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.toc li > ul > li {
|
||||
list-style: none;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.toc li a {
|
||||
background: #fff;
|
||||
-webkit-transition: background-color 0.3s ease-in-out;
|
||||
-moz-transition: background-color 0.3s ease-in-out;
|
||||
-o-transition: background-color 0.3s ease-in-out;
|
||||
transition: background-color 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.toc li.active a {
|
||||
background: #eee;
|
||||
padding: 0 1ex;
|
||||
color: #000;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.toc {
|
||||
position: relative;
|
||||
|
||||
-webkit-transition: top 1000ms cubic-bezier(0.090, 1, 0.135, 1.000); /* older webkit */
|
||||
-webkit-transition: top 1000ms cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-moz-transition: top 1000ms cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-ms-transition: top 1000ms cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-o-transition: top 1000ms cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
transition: top 1000ms cubic-bezier(0.090, 1.015, 0.135, 1.000); /* custom */
|
||||
|
||||
-webkit-transition-timing-function: cubic-bezier(0.090, 1, 0.135, 1.000); /* older webkit */
|
||||
-webkit-transition-timing-function: cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-moz-transition-timing-function: cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-ms-transition-timing-function: cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
-o-transition-timing-function: cubic-bezier(0.090, 1.015, 0.135, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.090, 1.015, 0.135, 1.000); /* custom */
|
||||
}
|
||||
|
||||
.headerlink {
|
||||
color: #ccc;
|
||||
font-family: Georgia;
|
||||
padding: 0 5px;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.headerlink:hover {
|
||||
text-decoration: none;
|
||||
background: #f9f9f9;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
h2:hover .headerlink,
|
||||
h3:hover .headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.nav-tabs.nav-stacked > li > a {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
.content h1 {
|
||||
margin: 0 0 0.5em;
|
||||
font-size: 42px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.content h2 {
|
||||
font-size: 30px;
|
||||
margin: 1em 0 0.4em;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.page-header h1 {
|
||||
margin: 0;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.k-footer div {
|
||||
text-align: right;
|
||||
color: #888;
|
||||
font-size: 12px;
|
||||
margin: 1.5em 0;
|
||||
padding: 1ex 0;
|
||||
}
|
||||
|
||||
.k-donate {
|
||||
margin: 40px 0 0 12px;
|
||||
}
|
||||
|
||||
.k-donate h2 {
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.k-donate .k-donate-buttons {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.k-flattr {
|
||||
background-image: url(/img/donate.png);
|
||||
background-position: 0px 0px;
|
||||
width: 86px;
|
||||
height: 22px;
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.k-flattr:hover {
|
||||
background-position: 0 -22px;
|
||||
}
|
||||
.k-flattr span {
|
||||
display: none;
|
||||
}
|
||||
.k-paypal {
|
||||
display: block;
|
||||
border: none!important;
|
||||
border-radius: 0;
|
||||
cursor: pointer;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
}
|
||||
|
||||
.k-howto {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
.k-big-number span {
|
||||
font-size: 30px;
|
||||
border-radius: 25px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
font-weight: 100;
|
||||
color: #fff;
|
||||
display: block;
|
||||
background: #69d;
|
||||
line-height: 50px;
|
||||
}
|
||||
.k-gui .dg {
|
||||
color: #000;
|
||||
text-shadow: 0 1px 0 #ccc;
|
||||
}
|
||||
.k-gui .dg .c input[type="text"] {
|
||||
background-color: #DDD;
|
||||
}
|
||||
.k-gui .dg .cr.number input[type="text"] {
|
||||
color: #356;
|
||||
height: 12px;
|
||||
}
|
||||
.k-gui .dg .c .slider {
|
||||
background-color: #ddd;
|
||||
}
|
||||
.k-gui .dg .c:hover .slider {
|
||||
background-color: #fff;
|
||||
}
|
||||
.k-gui .dg .close-button {
|
||||
display: none;
|
||||
}
|
||||
.k-gui .dg li:not(.folder) {
|
||||
background: #eee;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
.k-gui .dg .save-row {
|
||||
border-radius: 6px 6px 0 0;
|
||||
}
|
||||
.k-gui .dg .save-row select {
|
||||
margin-top: 6px;
|
||||
}
|
||||
.k-gui .dg .cr.boolean:hover {
|
||||
background: #ddd;
|
||||
}
|
||||
|
||||
.k-gui .dg .c input[type="checkbox"] {
|
||||
margin-top: 0;
|
||||
}
|
||||
.k-gui .dg .closed li.title {
|
||||
background-image: none;
|
||||
background-color: #e4e4e4;
|
||||
}
|
||||
.k-gui .dg .cr.number input[type="text"]:hover,
|
||||
.k-gui .dg .cr.number input[type="text"]:focus {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: right;
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #888;
|
||||
border-bottom: 1px dotted #888;
|
||||
}
|
||||
|
||||
.footer a:hover {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid #555;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 979px) {
|
||||
|
||||
.sidebar .tagline {
|
||||
padding: 5px 0 10px;
|
||||
}
|
||||
|
||||
.content p, .content li {
|
||||
font-size: 13px;
|
||||
line-height: 19px;
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.content h2 {
|
||||
font-size: 23px;
|
||||
}
|
||||
}
|
||||
51
css/prettify.css
Normal file
@@ -0,0 +1,51 @@
|
||||
/* Pretty printing styles. Used with prettify.js. */
|
||||
/* Vim sunburst theme by David Leibovic */
|
||||
|
||||
pre .str, code .str { color: #65B042; } /* string - green */
|
||||
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
|
||||
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
|
||||
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
|
||||
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
|
||||
pre .pun, code .pun { color: #fff; } /* punctuation - white */
|
||||
pre .pln, code .pln { color: #fff; } /* plaintext - white */
|
||||
pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
|
||||
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
|
||||
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
|
||||
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
|
||||
|
||||
pre.prettyprint, code.prettyprint {
|
||||
background-color: #000;
|
||||
-moz-border-radius: 8px;
|
||||
-webkit-border-radius: 8px;
|
||||
-o-border-radius: 8px;
|
||||
-ms-border-radius: 8px;
|
||||
-khtml-border-radius: 8px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
pre.prettyprint {
|
||||
width: 95%;
|
||||
margin: 1em auto;
|
||||
padding: 1em;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
|
||||
/* Specify class=linenums on a pre to get line numbering */
|
||||
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
|
||||
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
|
||||
/* Alternate shading for lines */
|
||||
li.L1,li.L3,li.L5,li.L7,li.L9 { }
|
||||
|
||||
@media print {
|
||||
pre .str, code .str { color: #060; }
|
||||
pre .kwd, code .kwd { color: #006; font-weight: bold; }
|
||||
pre .com, code .com { color: #600; font-style: italic; }
|
||||
pre .typ, code .typ { color: #404; font-weight: bold; }
|
||||
pre .lit, code .lit { color: #044; }
|
||||
pre .pun, code .pun { color: #440; }
|
||||
pre .pln, code .pln { color: #000; }
|
||||
pre .tag, code .tag { color: #006; font-weight: bold; }
|
||||
pre .atn, code .atn { color: #404; }
|
||||
pre .atv, code .atv { color: #060; }
|
||||
}
|
||||
1001
data/cities.json
Normal file
973
data/countries.json
Normal file
@@ -0,0 +1,973 @@
|
||||
[{
|
||||
"name": "Afghanistan",
|
||||
"code": "AF"
|
||||
},
|
||||
{
|
||||
"name": "Åland Islands",
|
||||
"code": "AX"
|
||||
},
|
||||
{
|
||||
"name": "Albania",
|
||||
"code": "AL"
|
||||
},
|
||||
{
|
||||
"name": "Algeria",
|
||||
"code": "DZ"
|
||||
},
|
||||
{
|
||||
"name": "American Samoa",
|
||||
"code": "AS"
|
||||
},
|
||||
{
|
||||
"name": "AndorrA",
|
||||
"code": "AD"
|
||||
},
|
||||
{
|
||||
"name": "Angola",
|
||||
"code": "AO"
|
||||
},
|
||||
{
|
||||
"name": "Anguilla",
|
||||
"code": "AI"
|
||||
},
|
||||
{
|
||||
"name": "Antarctica",
|
||||
"code": "AQ"
|
||||
},
|
||||
{
|
||||
"name": "Antigua and Barbuda",
|
||||
"code": "AG"
|
||||
},
|
||||
{
|
||||
"name": "Argentina",
|
||||
"code": "AR"
|
||||
},
|
||||
{
|
||||
"name": "Armenia",
|
||||
"code": "AM"
|
||||
},
|
||||
{
|
||||
"name": "Aruba",
|
||||
"code": "AW"
|
||||
},
|
||||
{
|
||||
"name": "Australia",
|
||||
"code": "AU"
|
||||
},
|
||||
{
|
||||
"name": "Austria",
|
||||
"code": "AT"
|
||||
},
|
||||
{
|
||||
"name": "Azerbaijan",
|
||||
"code": "AZ"
|
||||
},
|
||||
{
|
||||
"name": "Bahamas",
|
||||
"code": "BS"
|
||||
},
|
||||
{
|
||||
"name": "Bahrain",
|
||||
"code": "BH"
|
||||
},
|
||||
{
|
||||
"name": "Bangladesh",
|
||||
"code": "BD"
|
||||
},
|
||||
{
|
||||
"name": "Barbados",
|
||||
"code": "BB"
|
||||
},
|
||||
{
|
||||
"name": "Belarus",
|
||||
"code": "BY"
|
||||
},
|
||||
{
|
||||
"name": "Belgium",
|
||||
"code": "BE"
|
||||
},
|
||||
{
|
||||
"name": "Belize",
|
||||
"code": "BZ"
|
||||
},
|
||||
{
|
||||
"name": "Benin",
|
||||
"code": "BJ"
|
||||
},
|
||||
{
|
||||
"name": "Bermuda",
|
||||
"code": "BM"
|
||||
},
|
||||
{
|
||||
"name": "Bhutan",
|
||||
"code": "BT"
|
||||
},
|
||||
{
|
||||
"name": "Bolivia",
|
||||
"code": "BO"
|
||||
},
|
||||
{
|
||||
"name": "Bosnia and Herzegovina",
|
||||
"code": "BA"
|
||||
},
|
||||
{
|
||||
"name": "Botswana",
|
||||
"code": "BW"
|
||||
},
|
||||
{
|
||||
"name": "Bouvet Island",
|
||||
"code": "BV"
|
||||
},
|
||||
{
|
||||
"name": "Brazil",
|
||||
"code": "BR"
|
||||
},
|
||||
{
|
||||
"name": "British Indian Ocean Territory",
|
||||
"code": "IO"
|
||||
},
|
||||
{
|
||||
"name": "Brunei Darussalam",
|
||||
"code": "BN"
|
||||
},
|
||||
{
|
||||
"name": "Bulgaria",
|
||||
"code": "BG"
|
||||
},
|
||||
{
|
||||
"name": "Burkina Faso",
|
||||
"code": "BF"
|
||||
},
|
||||
{
|
||||
"name": "Burundi",
|
||||
"code": "BI"
|
||||
},
|
||||
{
|
||||
"name": "Cambodia",
|
||||
"code": "KH"
|
||||
},
|
||||
{
|
||||
"name": "Cameroon",
|
||||
"code": "CM"
|
||||
},
|
||||
{
|
||||
"name": "Canada",
|
||||
"code": "CA"
|
||||
},
|
||||
{
|
||||
"name": "Cape Verde",
|
||||
"code": "CV"
|
||||
},
|
||||
{
|
||||
"name": "Cayman Islands",
|
||||
"code": "KY"
|
||||
},
|
||||
{
|
||||
"name": "Central African Republic",
|
||||
"code": "CF"
|
||||
},
|
||||
{
|
||||
"name": "Chad",
|
||||
"code": "TD"
|
||||
},
|
||||
{
|
||||
"name": "Chile",
|
||||
"code": "CL"
|
||||
},
|
||||
{
|
||||
"name": "China",
|
||||
"code": "CN"
|
||||
},
|
||||
{
|
||||
"name": "Christmas Island",
|
||||
"code": "CX"
|
||||
},
|
||||
{
|
||||
"name": "Cocos (Keeling) Islands",
|
||||
"code": "CC"
|
||||
},
|
||||
{
|
||||
"name": "Colombia",
|
||||
"code": "CO"
|
||||
},
|
||||
{
|
||||
"name": "Comoros",
|
||||
"code": "KM"
|
||||
},
|
||||
{
|
||||
"name": "Congo",
|
||||
"code": "CG"
|
||||
},
|
||||
{
|
||||
"name": "Congo, The Democratic Republic of the",
|
||||
"code": "CD"
|
||||
},
|
||||
{
|
||||
"name": "Cook Islands",
|
||||
"code": "CK"
|
||||
},
|
||||
{
|
||||
"name": "Costa Rica",
|
||||
"code": "CR"
|
||||
},
|
||||
{
|
||||
"name": "Cote D'Ivoire",
|
||||
"code": "CI"
|
||||
},
|
||||
{
|
||||
"name": "Croatia",
|
||||
"code": "HR"
|
||||
},
|
||||
{
|
||||
"name": "Cuba",
|
||||
"code": "CU"
|
||||
},
|
||||
{
|
||||
"name": "Cyprus",
|
||||
"code": "CY"
|
||||
},
|
||||
{
|
||||
"name": "Czech Republic",
|
||||
"code": "CZ"
|
||||
},
|
||||
{
|
||||
"name": "Denmark",
|
||||
"code": "DK"
|
||||
},
|
||||
{
|
||||
"name": "Djibouti",
|
||||
"code": "DJ"
|
||||
},
|
||||
{
|
||||
"name": "Dominica",
|
||||
"code": "DM"
|
||||
},
|
||||
{
|
||||
"name": "Dominican Republic",
|
||||
"code": "DO"
|
||||
},
|
||||
{
|
||||
"name": "Ecuador",
|
||||
"code": "EC"
|
||||
},
|
||||
{
|
||||
"name": "Egypt",
|
||||
"code": "EG"
|
||||
},
|
||||
{
|
||||
"name": "El Salvador",
|
||||
"code": "SV"
|
||||
},
|
||||
{
|
||||
"name": "Equatorial Guinea",
|
||||
"code": "GQ"
|
||||
},
|
||||
{
|
||||
"name": "Eritrea",
|
||||
"code": "ER"
|
||||
},
|
||||
{
|
||||
"name": "Estonia",
|
||||
"code": "EE"
|
||||
},
|
||||
{
|
||||
"name": "Ethiopia",
|
||||
"code": "ET"
|
||||
},
|
||||
{
|
||||
"name": "Falkland Islands (Malvinas)",
|
||||
"code": "FK"
|
||||
},
|
||||
{
|
||||
"name": "Faroe Islands",
|
||||
"code": "FO"
|
||||
},
|
||||
{
|
||||
"name": "Fiji",
|
||||
"code": "FJ"
|
||||
},
|
||||
{
|
||||
"name": "Finland",
|
||||
"code": "FI"
|
||||
},
|
||||
{
|
||||
"name": "France",
|
||||
"code": "FR"
|
||||
},
|
||||
{
|
||||
"name": "French Guiana",
|
||||
"code": "GF"
|
||||
},
|
||||
{
|
||||
"name": "French Polynesia",
|
||||
"code": "PF"
|
||||
},
|
||||
{
|
||||
"name": "French Southern Territories",
|
||||
"code": "TF"
|
||||
},
|
||||
{
|
||||
"name": "Gabon",
|
||||
"code": "GA"
|
||||
},
|
||||
{
|
||||
"name": "Gambia",
|
||||
"code": "GM"
|
||||
},
|
||||
{
|
||||
"name": "Georgia",
|
||||
"code": "GE"
|
||||
},
|
||||
{
|
||||
"name": "Germany",
|
||||
"code": "DE",
|
||||
"city_name": "Munich",
|
||||
"lat": "48.15",
|
||||
"long": "11.583",
|
||||
"nb_visits": 456
|
||||
},
|
||||
{
|
||||
"name": "Ghana",
|
||||
"code": "GH"
|
||||
},
|
||||
{
|
||||
"name": "Gibraltar",
|
||||
"code": "GI"
|
||||
},
|
||||
{
|
||||
"name": "Greece",
|
||||
"code": "GR"
|
||||
},
|
||||
{
|
||||
"name": "Greenland",
|
||||
"code": "GL"
|
||||
},
|
||||
{
|
||||
"name": "Grenada",
|
||||
"code": "GD"
|
||||
},
|
||||
{
|
||||
"name": "Guadeloupe",
|
||||
"code": "GP"
|
||||
},
|
||||
{
|
||||
"name": "Guam",
|
||||
"code": "GU"
|
||||
},
|
||||
{
|
||||
"name": "Guatemala",
|
||||
"code": "GT"
|
||||
},
|
||||
{
|
||||
"name": "Guernsey",
|
||||
"code": "GG"
|
||||
},
|
||||
{
|
||||
"name": "Guinea",
|
||||
"code": "GN"
|
||||
},
|
||||
{
|
||||
"name": "Guinea-Bissau",
|
||||
"code": "GW"
|
||||
},
|
||||
{
|
||||
"name": "Guyana",
|
||||
"code": "GY"
|
||||
},
|
||||
{
|
||||
"name": "Haiti",
|
||||
"code": "HT"
|
||||
},
|
||||
{
|
||||
"name": "Heard Island and Mcdonald Islands",
|
||||
"code": "HM"
|
||||
},
|
||||
{
|
||||
"name": "Holy See (Vatican City State)",
|
||||
"code": "VA"
|
||||
},
|
||||
{
|
||||
"name": "Honduras",
|
||||
"code": "HN"
|
||||
},
|
||||
{
|
||||
"name": "Hong Kong",
|
||||
"code": "HK"
|
||||
},
|
||||
{
|
||||
"name": "Hungary",
|
||||
"code": "HU"
|
||||
},
|
||||
{
|
||||
"name": "Iceland",
|
||||
"code": "IS"
|
||||
},
|
||||
{
|
||||
"name": "India",
|
||||
"code": "IN"
|
||||
},
|
||||
{
|
||||
"name": "Indonesia",
|
||||
"code": "ID"
|
||||
},
|
||||
{
|
||||
"name": "Iran, Islamic Republic Of",
|
||||
"code": "IR"
|
||||
},
|
||||
{
|
||||
"name": "Iraq",
|
||||
"code": "IQ"
|
||||
},
|
||||
{
|
||||
"name": "Ireland",
|
||||
"code": "IE"
|
||||
},
|
||||
{
|
||||
"name": "Isle of Man",
|
||||
"code": "IM"
|
||||
},
|
||||
{
|
||||
"name": "Israel",
|
||||
"code": "IL"
|
||||
},
|
||||
{
|
||||
"name": "Italy",
|
||||
"code": "IT"
|
||||
},
|
||||
{
|
||||
"name": "Jamaica",
|
||||
"code": "JM"
|
||||
},
|
||||
{
|
||||
"name": "Japan",
|
||||
"code": "JP"
|
||||
},
|
||||
{
|
||||
"name": "Jersey",
|
||||
"code": "JE"
|
||||
},
|
||||
{
|
||||
"name": "Jordan",
|
||||
"code": "JO"
|
||||
},
|
||||
{
|
||||
"name": "Kazakhstan",
|
||||
"code": "KZ"
|
||||
},
|
||||
{
|
||||
"name": "Kenya",
|
||||
"code": "KE"
|
||||
},
|
||||
{
|
||||
"name": "Kiribati",
|
||||
"code": "KI"
|
||||
},
|
||||
{
|
||||
"name": "Korea",
|
||||
"code": "KR"
|
||||
},
|
||||
{
|
||||
"name": "Kuwait",
|
||||
"code": "KW"
|
||||
},
|
||||
{
|
||||
"name": "Kyrgyzstan",
|
||||
"code": "KG"
|
||||
},
|
||||
{
|
||||
"name": "Laos",
|
||||
"code": "LA"
|
||||
},
|
||||
{
|
||||
"name": "Latvia",
|
||||
"code": "LV"
|
||||
},
|
||||
{
|
||||
"name": "Lebanon",
|
||||
"code": "LB"
|
||||
},
|
||||
{
|
||||
"name": "Lesotho",
|
||||
"code": "LS"
|
||||
},
|
||||
{
|
||||
"name": "Liberia",
|
||||
"code": "LR"
|
||||
},
|
||||
{
|
||||
"name": "Libyan Arab Jamahiriya",
|
||||
"code": "LY"
|
||||
},
|
||||
{
|
||||
"name": "Liechtenstein",
|
||||
"code": "LI"
|
||||
},
|
||||
{
|
||||
"name": "Lithuania",
|
||||
"code": "LT"
|
||||
},
|
||||
{
|
||||
"name": "Luxembourg",
|
||||
"code": "LU"
|
||||
},
|
||||
{
|
||||
"name": "Macao",
|
||||
"code": "MO"
|
||||
},
|
||||
{
|
||||
"name": "Macedonia",
|
||||
"code": "MK"
|
||||
},
|
||||
{
|
||||
"name": "Madagascar",
|
||||
"code": "MG"
|
||||
},
|
||||
{
|
||||
"name": "Malawi",
|
||||
"code": "MW"
|
||||
},
|
||||
{
|
||||
"name": "Malaysia",
|
||||
"code": "MY"
|
||||
},
|
||||
{
|
||||
"name": "Maldives",
|
||||
"code": "MV"
|
||||
},
|
||||
{
|
||||
"name": "Mali",
|
||||
"code": "ML"
|
||||
},
|
||||
{
|
||||
"name": "Malta",
|
||||
"code": "MT"
|
||||
},
|
||||
{
|
||||
"name": "Marshall Islands",
|
||||
"code": "MH"
|
||||
},
|
||||
{
|
||||
"name": "Martinique",
|
||||
"code": "MQ"
|
||||
},
|
||||
{
|
||||
"name": "Mauritania",
|
||||
"code": "MR"
|
||||
},
|
||||
{
|
||||
"name": "Mauritius",
|
||||
"code": "MU"
|
||||
},
|
||||
{
|
||||
"name": "Mayotte",
|
||||
"code": "YT"
|
||||
},
|
||||
{
|
||||
"name": "Mexico",
|
||||
"code": "MX"
|
||||
},
|
||||
{
|
||||
"name": "Micronesia",
|
||||
"code": "FM"
|
||||
},
|
||||
{
|
||||
"name": "Moldova",
|
||||
"code": "MD"
|
||||
},
|
||||
{
|
||||
"name": "Monaco",
|
||||
"code": "MC"
|
||||
},
|
||||
{
|
||||
"name": "Mongolia",
|
||||
"code": "MN"
|
||||
},
|
||||
{
|
||||
"name": "Montserrat",
|
||||
"code": "MS"
|
||||
},
|
||||
{
|
||||
"name": "Morocco",
|
||||
"code": "MA"
|
||||
},
|
||||
{
|
||||
"name": "Mozambique",
|
||||
"code": "MZ"
|
||||
},
|
||||
{
|
||||
"name": "Myanmar",
|
||||
"code": "MM"
|
||||
},
|
||||
{
|
||||
"name": "Namibia",
|
||||
"code": "NA"
|
||||
},
|
||||
{
|
||||
"name": "Nauru",
|
||||
"code": "NR"
|
||||
},
|
||||
{
|
||||
"name": "Nepal",
|
||||
"code": "NP"
|
||||
},
|
||||
{
|
||||
"name": "Netherlands",
|
||||
"code": "NL"
|
||||
},
|
||||
{
|
||||
"name": "Netherlands Antilles",
|
||||
"code": "AN"
|
||||
},
|
||||
{
|
||||
"name": "New Caledonia",
|
||||
"code": "NC"
|
||||
},
|
||||
{
|
||||
"name": "New Zealand",
|
||||
"code": "NZ"
|
||||
},
|
||||
{
|
||||
"name": "Nicaragua",
|
||||
"code": "NI"
|
||||
},
|
||||
{
|
||||
"name": "Niger",
|
||||
"code": "NE"
|
||||
},
|
||||
{
|
||||
"name": "Nigeria",
|
||||
"code": "NG"
|
||||
},
|
||||
{
|
||||
"name": "Niue",
|
||||
"code": "NU"
|
||||
},
|
||||
{
|
||||
"name": "Norfolk Island",
|
||||
"code": "NF"
|
||||
},
|
||||
{
|
||||
"name": "Northern Mariana Islands",
|
||||
"code": "MP"
|
||||
},
|
||||
{
|
||||
"name": "Norway",
|
||||
"code": "NO"
|
||||
},
|
||||
{
|
||||
"name": "Oman",
|
||||
"code": "OM"
|
||||
},
|
||||
{
|
||||
"name": "Pakistan",
|
||||
"code": "PK"
|
||||
},
|
||||
{
|
||||
"name": "Palau",
|
||||
"code": "PW"
|
||||
},
|
||||
{
|
||||
"name": "Palestinian Territory, Occupied",
|
||||
"code": "PS"
|
||||
},
|
||||
{
|
||||
"name": "Panama",
|
||||
"code": "PA"
|
||||
},
|
||||
{
|
||||
"name": "Papua New Guinea",
|
||||
"code": "PG"
|
||||
},
|
||||
{
|
||||
"name": "Paraguay",
|
||||
"code": "PY"
|
||||
},
|
||||
{
|
||||
"name": "Peru",
|
||||
"code": "PE"
|
||||
},
|
||||
{
|
||||
"name": "Philippines",
|
||||
"code": "PH"
|
||||
},
|
||||
{
|
||||
"name": "Pitcairn",
|
||||
"code": "PN"
|
||||
},
|
||||
{
|
||||
"name": "Poland",
|
||||
"code": "PL"
|
||||
},
|
||||
{
|
||||
"name": "Portugal",
|
||||
"code": "PT"
|
||||
},
|
||||
{
|
||||
"name": "Puerto Rico",
|
||||
"code": "PR"
|
||||
},
|
||||
{
|
||||
"name": "Qatar",
|
||||
"code": "QA"
|
||||
},
|
||||
{
|
||||
"name": "Reunion",
|
||||
"code": "RE"
|
||||
},
|
||||
{
|
||||
"name": "Romania",
|
||||
"code": "RO"
|
||||
},
|
||||
{
|
||||
"name": "Russian Federation",
|
||||
"code": "RU"
|
||||
},
|
||||
{
|
||||
"name": "RWANDA",
|
||||
"code": "RW"
|
||||
},
|
||||
{
|
||||
"name": "Saint Helena",
|
||||
"code": "SH"
|
||||
},
|
||||
{
|
||||
"name": "Saint Kitts and Nevis",
|
||||
"code": "KN"
|
||||
},
|
||||
{
|
||||
"name": "Saint Lucia",
|
||||
"code": "LC"
|
||||
},
|
||||
{
|
||||
"name": "Saint Pierre and Miquelon",
|
||||
"code": "PM"
|
||||
},
|
||||
{
|
||||
"name": "Saint Vincent and the Grenadines",
|
||||
"code": "VC"
|
||||
},
|
||||
{
|
||||
"name": "Samoa",
|
||||
"code": "WS"
|
||||
},
|
||||
{
|
||||
"name": "San Marino",
|
||||
"code": "SM"
|
||||
},
|
||||
{
|
||||
"name": "Sao Tome and Principe",
|
||||
"code": "ST"
|
||||
},
|
||||
{
|
||||
"name": "Saudi Arabia",
|
||||
"code": "SA"
|
||||
},
|
||||
{
|
||||
"name": "Senegal",
|
||||
"code": "SN"
|
||||
},
|
||||
{
|
||||
"name": "Serbia and Montenegro",
|
||||
"code": "CS"
|
||||
},
|
||||
{
|
||||
"name": "Seychelles",
|
||||
"code": "SC"
|
||||
},
|
||||
{
|
||||
"name": "Sierra Leone",
|
||||
"code": "SL"
|
||||
},
|
||||
{
|
||||
"name": "Singapore",
|
||||
"code": "SG"
|
||||
},
|
||||
{
|
||||
"name": "Slovakia",
|
||||
"code": "SK"
|
||||
},
|
||||
{
|
||||
"name": "Slovenia",
|
||||
"code": "SI"
|
||||
},
|
||||
{
|
||||
"name": "Solomon Islands",
|
||||
"code": "SB"
|
||||
},
|
||||
{
|
||||
"name": "Somalia",
|
||||
"code": "SO"
|
||||
},
|
||||
{
|
||||
"name": "South Africa",
|
||||
"code": "ZA"
|
||||
},
|
||||
{
|
||||
"name": "South Georgia and the South Sandwich Islands",
|
||||
"code": "GS"
|
||||
},
|
||||
{
|
||||
"name": "Spain",
|
||||
"code": "ES"
|
||||
},
|
||||
{
|
||||
"name": "Sri Lanka",
|
||||
"code": "LK"
|
||||
},
|
||||
{
|
||||
"name": "Sudan",
|
||||
"code": "SD"
|
||||
},
|
||||
{
|
||||
"name": "Suriname",
|
||||
"code": "SR"
|
||||
},
|
||||
{
|
||||
"name": "Svalbard and Jan Mayen",
|
||||
"code": "SJ"
|
||||
},
|
||||
{
|
||||
"name": "Swaziland",
|
||||
"code": "SZ"
|
||||
},
|
||||
{
|
||||
"name": "Sweden",
|
||||
"code": "SE"
|
||||
},
|
||||
{
|
||||
"name": "Switzerland",
|
||||
"code": "CH"
|
||||
},
|
||||
{
|
||||
"name": "Syrian Arab Republic",
|
||||
"code": "SY"
|
||||
},
|
||||
{
|
||||
"name": "Taiwan, Province of China",
|
||||
"code": "TW"
|
||||
},
|
||||
{
|
||||
"name": "Tajikistan",
|
||||
"code": "TJ"
|
||||
},
|
||||
{
|
||||
"name": "Tanzania, United Republic of",
|
||||
"code": "TZ"
|
||||
},
|
||||
{
|
||||
"name": "Thailand",
|
||||
"code": "TH"
|
||||
},
|
||||
{
|
||||
"name": "Timor-Leste",
|
||||
"code": "TL"
|
||||
},
|
||||
{
|
||||
"name": "Togo",
|
||||
"code": "TG"
|
||||
},
|
||||
{
|
||||
"name": "Tokelau",
|
||||
"code": "TK"
|
||||
},
|
||||
{
|
||||
"name": "Tonga",
|
||||
"code": "TO"
|
||||
},
|
||||
{
|
||||
"name": "Trinidad and Tobago",
|
||||
"code": "TT"
|
||||
},
|
||||
{
|
||||
"name": "Tunisia",
|
||||
"code": "TN"
|
||||
},
|
||||
{
|
||||
"name": "Turkey",
|
||||
"code": "TR"
|
||||
},
|
||||
{
|
||||
"name": "Turkmenistan",
|
||||
"code": "TM"
|
||||
},
|
||||
{
|
||||
"name": "Turks and Caicos Islands",
|
||||
"code": "TC"
|
||||
},
|
||||
{
|
||||
"name": "Tuvalu",
|
||||
"code": "TV"
|
||||
},
|
||||
{
|
||||
"name": "Uganda",
|
||||
"code": "UG"
|
||||
},
|
||||
{
|
||||
"name": "Ukraine",
|
||||
"code": "UA"
|
||||
},
|
||||
{
|
||||
"name": "United Arab Emirates",
|
||||
"code": "AE"
|
||||
},
|
||||
{
|
||||
"name": "United Kingdom",
|
||||
"code": "GB"
|
||||
},
|
||||
{
|
||||
"name": "United States",
|
||||
"code": "US"
|
||||
},
|
||||
{
|
||||
"name": "United States Minor Outlying Islands",
|
||||
"code": "UM"
|
||||
},
|
||||
{
|
||||
"name": "Uruguay",
|
||||
"code": "UY"
|
||||
},
|
||||
{
|
||||
"name": "Uzbekistan",
|
||||
"code": "UZ"
|
||||
},
|
||||
{
|
||||
"name": "Vanuatu",
|
||||
"code": "VU"
|
||||
},
|
||||
{
|
||||
"name": "Venezuela",
|
||||
"code": "VE"
|
||||
},
|
||||
{
|
||||
"name": "Viet Nam",
|
||||
"code": "VN"
|
||||
},
|
||||
{
|
||||
"name": "Virgin Islands, British",
|
||||
"code": "VG"
|
||||
},
|
||||
{
|
||||
"name": "Virgin Islands, U.S.",
|
||||
"code": "VI"
|
||||
},
|
||||
{
|
||||
"name": "Wallis and Futuna",
|
||||
"code": "WF"
|
||||
},
|
||||
{
|
||||
"name": "Western Sahara",
|
||||
"code": "EH"
|
||||
},
|
||||
{
|
||||
"name": "Yemen",
|
||||
"code": "YE"
|
||||
},
|
||||
{
|
||||
"name": "Zambia",
|
||||
"code": "ZM"
|
||||
},
|
||||
{
|
||||
"name": "Zimbabwe",
|
||||
"code": "ZW"
|
||||
}
|
||||
]
|
||||
BIN
favicon.ico
Normal file
|
After Width: | Height: | Size: 587 B |
81
index.html
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
layout: showcase
|
||||
title: Twentyone World
|
||||
jsplugins:
|
||||
qtip: '/js/jquery.qtip.min.js'
|
||||
---
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/jquery.qtip.css">
|
||||
<script type="text/javascript" src="/js/jquery.qtip.min.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
||||
// initialize tooltips
|
||||
$.fn.qtip.defaults.style.classes = 'ui-tooltip-bootstrap';
|
||||
$.fn.qtip.defaults.style.def = false;
|
||||
|
||||
var map = kartograph.map('#map');
|
||||
|
||||
map.loadMap('map/world.svg', function() {
|
||||
map.addLayer('context', {
|
||||
styles: {
|
||||
stroke: '#aaa',
|
||||
fill: '#f6f4f2'
|
||||
}
|
||||
});
|
||||
map.addLayer('countries', {
|
||||
id: 'bg',
|
||||
styles: {
|
||||
stroke: '#d8d6d4',
|
||||
'stroke-width': 6.15,
|
||||
'stroke-linejoin': 'round'
|
||||
}
|
||||
});
|
||||
|
||||
map.addLayer('countries', {
|
||||
title: function(d) { return d.name },
|
||||
styles: {
|
||||
stroke: '#333',
|
||||
fill: '#fff'
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: 'data/countries.json',
|
||||
dataType: 'json',
|
||||
success: function(cities) {
|
||||
|
||||
var scale = kartograph.scale.sqrt(cities.concat([{ nb_visits: 0 }]), 'nb_visits').range([0, 60]);
|
||||
|
||||
map.addSymbols({
|
||||
type: kartograph.Bubble,
|
||||
data: cities,
|
||||
location: function(city) {
|
||||
return [city.long, city.lat];
|
||||
},
|
||||
radius: function(city) {
|
||||
return scale(city.nb_visits);
|
||||
},
|
||||
tooltip: function(city) {
|
||||
return '<h3>'+city.city_name+'</h3>'+city.nb_visits+' visits';
|
||||
},
|
||||
sortBy: 'radius desc',
|
||||
style: 'fill:#800; stroke: #fff; fill-opacity: 0.5;',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}, { padding: -5 });
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div id="map" style="border:0px solid #999; margin-bottom:1em">
|
||||
</div>
|
||||
|
||||
<p>Lorem ipsum, add your stuff.</p>
|
||||
81
index.html.bak
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
layout: showcase
|
||||
title: Twentyone World
|
||||
jsplugins:
|
||||
qtip: '/js/jquery.qtip.min.js'
|
||||
---
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/jquery.qtip.css">
|
||||
<script type="text/javascript" src="/js/jquery.qtip.min.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
|
||||
// initialize tooltips
|
||||
$.fn.qtip.defaults.style.classes = 'ui-tooltip-bootstrap';
|
||||
$.fn.qtip.defaults.style.def = false;
|
||||
|
||||
var map = kartograph.map('#map');
|
||||
|
||||
map.loadMap('map/world.svg', function() {
|
||||
map.addLayer('context', {
|
||||
styles: {
|
||||
stroke: '#aaa',
|
||||
fill: '#f6f4f2'
|
||||
}
|
||||
});
|
||||
map.addLayer('countries', {
|
||||
id: 'bg',
|
||||
styles: {
|
||||
stroke: '#d8d6d4',
|
||||
'stroke-width': 6.15,
|
||||
'stroke-linejoin': 'round'
|
||||
}
|
||||
});
|
||||
|
||||
map.addLayer('countries', {
|
||||
title: function(d) { return d.name },
|
||||
styles: {
|
||||
stroke: '#333',
|
||||
fill: '#fff'
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: 'data/countries.json',
|
||||
dataType: 'json',
|
||||
success: function(countries) {
|
||||
|
||||
var scale = kartograph.scale.sqrt(countries.concat([{ meetups: 0 }]), 'meetups').range([0, 5]);
|
||||
|
||||
map.addSymbols({
|
||||
type: kartograph.Bubble,
|
||||
data: countries,
|
||||
location: function(country) {
|
||||
return [country.long, country.lat];
|
||||
},
|
||||
radius: function(country) {
|
||||
return scale(country.meetups);
|
||||
},
|
||||
tooltip: function(country) {
|
||||
return '<h3>'+country.name+'</h3>'+country.meetups+' meetups';
|
||||
},
|
||||
sortBy: 'radius desc',
|
||||
style: 'fill:#800; stroke: #fff; fill-opacity: 0.5;',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}, { padding: -5 });
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div id="map" style="border:0px solid #999; margin-bottom:1em">
|
||||
</div>
|
||||
|
||||
<p>Lorem ipsum, add your stuff.</p>
|
||||
1
js/chroma.min.js
vendored
Normal file
28
js/flashcanvas.js
Executable file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* FlashCanvas
|
||||
*
|
||||
* Copyright (c) 2009 Tim Cameron Ryan
|
||||
* Copyright (c) 2009-2011 FlashCanvas Project
|
||||
* Released under the MIT/X License
|
||||
*/
|
||||
window.ActiveXObject&&!window.CanvasRenderingContext2D&&function(h,j){function D(a){this.code=a;this.message=T[a]}function U(a){this.width=a}function E(a){this.id=a.C++}function t(a){this.G=a;this.id=a.C++}function u(a,b){this.canvas=a;this.B=b;this.d=a.uniqueID;this.D();this.C=0;this.t="";var c=this;setInterval(function(){n[c.d]===0&&c.e()},30)}function A(){if(j.readyState==="complete"){j.detachEvent(F,A);for(var a=j.getElementsByTagName(r),b=0,c=a.length;b<c;++b)B.initElement(a[b])}}function G(){var a=
|
||||
event.srcElement,b=a.parentNode;a.blur();b.focus()}function H(){var a=event.propertyName;if(a==="width"||a==="height"){var b=event.srcElement,c=b[a],d=parseInt(c,10);if(isNaN(d)||d<0)d=a==="width"?300:150;if(c===d){b.style[a]=d+"px";b.getContext("2d").I(b.width,b.height)}else b[a]=d}}function I(){h.detachEvent(J,I);for(var a in s){var b=s[a],c=b.firstChild,d;for(d in c)if(typeof c[d]==="function")c[d]=k;for(d in b)if(typeof b[d]==="function")b[d]=k;c.detachEvent(K,G);b.detachEvent(L,H)}h[M]=k;h[N]=
|
||||
k;h[O]=k;h[C]=k;h[P]=k}function V(){var a=j.getElementsByTagName("script");a=a[a.length-1];return j.documentMode>=8?a.src:a.getAttribute("src",4)}function v(a){return(""+a).replace(/&/g,"&").replace(/</g,"<")}function W(a){return a.toLowerCase()}function i(a){throw new D(a);}function Q(a){var b=parseInt(a.width,10),c=parseInt(a.height,10);if(isNaN(b)||b<0)b=300;if(isNaN(c)||c<0)c=150;a.width=b;a.height=c}var k=null,r="canvas",M="CanvasRenderingContext2D",N="CanvasGradient",O="CanvasPattern",
|
||||
C="FlashCanvas",P="G_vmlCanvasManager",K="onfocus",L="onpropertychange",F="onreadystatechange",J="onunload",w=((h[C+"Options"]||{}).swfPath||V().replace(/[^\/]+$/,""))+"flashcanvas.swf",e=new function(a){for(var b=0,c=a.length;b<c;b++)this[a[b]]=b}(["toDataURL","save","restore","scale","rotate","translate","transform","setTransform","globalAlpha","globalCompositeOperation","strokeStyle","fillStyle","createLinearGradient","createRadialGradient","createPattern","lineWidth","lineCap","lineJoin","miterLimit",
|
||||
"shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","clearRect","fillRect","strokeRect","beginPath","closePath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","rect","arc","fill","stroke","clip","isPointInPath","font","textAlign","textBaseline","fillText","strokeText","measureText","drawImage","createImageData","getImageData","putImageData","addColorStop","direction","resize"]),x={},n={},s={},y={};u.prototype={save:function(){this.b();this.c();this.m();this.l();this.z();this.w();
|
||||
this.F.push([this.f,this.g,this.A,this.u,this.j,this.h,this.i,this.k,this.p,this.q,this.n,this.o,this.v,this.r,this.s]);this.a.push(e.save)},restore:function(){var a=this.F;if(a.length){a=a.pop();this.globalAlpha=a[0];this.globalCompositeOperation=a[1];this.strokeStyle=a[2];this.fillStyle=a[3];this.lineWidth=a[4];this.lineCap=a[5];this.lineJoin=a[6];this.miterLimit=a[7];this.shadowOffsetX=a[8];this.shadowOffsetY=a[9];this.shadowBlur=a[10];this.shadowColor=a[11];this.font=a[12];this.textAlign=a[13];
|
||||
this.textBaseline=a[14]}this.a.push(e.restore)},scale:function(a,b){this.a.push(e.scale,a,b)},rotate:function(a){this.a.push(e.rotate,a)},translate:function(a,b){this.a.push(e.translate,a,b)},transform:function(a,b,c,d,f,g){this.a.push(e.transform,a,b,c,d,f,g)},setTransform:function(a,b,c,d,f,g){this.a.push(e.setTransform,a,b,c,d,f,g)},b:function(){var a=this.a;if(this.f!==this.globalAlpha){this.f=this.globalAlpha;a.push(e.globalAlpha,this.f)}if(this.g!==this.globalCompositeOperation){this.g=this.globalCompositeOperation;
|
||||
a.push(e.globalCompositeOperation,this.g)}},m:function(){if(this.A!==this.strokeStyle){var a=this.A=this.strokeStyle;this.a.push(e.strokeStyle,typeof a==="object"?a.id:a)}},l:function(){if(this.u!==this.fillStyle){var a=this.u=this.fillStyle;this.a.push(e.fillStyle,typeof a==="object"?a.id:a)}},createLinearGradient:function(a,b,c,d){isFinite(a)&&isFinite(b)&&isFinite(c)&&isFinite(d)||i(9);this.a.push(e.createLinearGradient,a,b,c,d);return new t(this)},createRadialGradient:function(a,b,c,d,f,g){isFinite(a)&&
|
||||
isFinite(b)&&isFinite(c)&&isFinite(d)&&isFinite(f)&&isFinite(g)||i(9);if(c<0||g<0)i(1);this.a.push(e.createRadialGradient,a,b,c,d,f,g);return new t(this)},createPattern:function(a,b){a||i(17);var c=a.tagName,d,f=this.d;if(c){c=c.toLowerCase();if(c==="img")d=a.getAttribute("src",2);else if(c===r||c==="video")return;else i(17)}else if(a.src)d=a.src;else i(17);b==="repeat"||b==="no-repeat"||b==="repeat-x"||b==="repeat-y"||b===""||b===k||i(12);this.a.push(e.createPattern,v(d),b);if(x[f]){this.e();++n[f]}return new E(this)},
|
||||
z:function(){var a=this.a;if(this.j!==this.lineWidth){this.j=this.lineWidth;a.push(e.lineWidth,this.j)}if(this.h!==this.lineCap){this.h=this.lineCap;a.push(e.lineCap,this.h)}if(this.i!==this.lineJoin){this.i=this.lineJoin;a.push(e.lineJoin,this.i)}if(this.k!==this.miterLimit){this.k=this.miterLimit;a.push(e.miterLimit,this.k)}},c:function(){var a=this.a;if(this.p!==this.shadowOffsetX){this.p=this.shadowOffsetX;a.push(e.shadowOffsetX,this.p)}if(this.q!==this.shadowOffsetY){this.q=this.shadowOffsetY;
|
||||
a.push(e.shadowOffsetY,this.q)}if(this.n!==this.shadowBlur){this.n=this.shadowBlur;a.push(e.shadowBlur,this.n)}if(this.o!==this.shadowColor){this.o=this.shadowColor;a.push(e.shadowColor,this.o)}},clearRect:function(a,b,c,d){this.a.push(e.clearRect,a,b,c,d)},fillRect:function(a,b,c,d){this.b();this.c();this.l();this.a.push(e.fillRect,a,b,c,d)},strokeRect:function(a,b,c,d){this.b();this.c();this.m();this.z();this.a.push(e.strokeRect,a,b,c,d)},beginPath:function(){this.a.push(e.beginPath)},closePath:function(){this.a.push(e.closePath)},
|
||||
moveTo:function(a,b){this.a.push(e.moveTo,a,b)},lineTo:function(a,b){this.a.push(e.lineTo,a,b)},quadraticCurveTo:function(a,b,c,d){this.a.push(e.quadraticCurveTo,a,b,c,d)},bezierCurveTo:function(a,b,c,d,f,g){this.a.push(e.bezierCurveTo,a,b,c,d,f,g)},arcTo:function(a,b,c,d,f){f<0&&isFinite(f)&&i(1);this.a.push(e.arcTo,a,b,c,d,f)},rect:function(a,b,c,d){this.a.push(e.rect,a,b,c,d)},arc:function(a,b,c,d,f,g){c<0&&isFinite(c)&&i(1);this.a.push(e.arc,a,b,c,d,f,g?1:0)},fill:function(){this.b();this.c();
|
||||
this.l();this.a.push(e.fill)},stroke:function(){this.b();this.c();this.m();this.z();this.a.push(e.stroke)},clip:function(){this.a.push(e.clip)},w:function(){var a=this.a;if(this.v!==this.font)try{var b=y[this.d];b.style.font=this.v=this.font;var c=b.currentStyle;a.push(e.font,[c.fontStyle,c.fontWeight,b.offsetHeight,c.fontFamily].join(" "))}catch(d){}if(this.r!==this.textAlign){this.r=this.textAlign;a.push(e.textAlign,this.r)}if(this.s!==this.textBaseline){this.s=this.textBaseline;a.push(e.textBaseline,
|
||||
this.s)}if(this.t!==this.canvas.currentStyle.direction){this.t=this.canvas.currentStyle.direction;a.push(e.direction,this.t)}},fillText:function(a,b,c,d){this.b();this.l();this.c();this.w();this.a.push(e.fillText,v(a),b,c,d===void 0?Infinity:d)},strokeText:function(a,b,c,d){this.b();this.m();this.c();this.w();this.a.push(e.strokeText,v(a),b,c,d===void 0?Infinity:d)},measureText:function(a){var b=y[this.d];try{b.style.font=this.font}catch(c){}b.innerText=a.replace(/[ \n\f\r]/g,"\t");return new U(b.offsetWidth)},
|
||||
drawImage:function(a,b,c,d,f,g,o,l,z){a||i(17);var p=a.tagName,m,q=arguments.length,R=this.d;if(p){p=p.toLowerCase();if(p==="img")m=a.getAttribute("src",2);else if(p===r||p==="video")return;else i(17)}else if(a.src)m=a.src;else i(17);this.b();this.c();m=v(m);if(q===3)this.a.push(e.drawImage,q,m,b,c);else if(q===5)this.a.push(e.drawImage,q,m,b,c,d,f);else if(q===9){if(d===0||f===0)i(1);this.a.push(e.drawImage,q,m,b,c,d,f,g,o,l,z)}else return;if(x[R]){this.e();++n[R]}},D:function(){this.globalAlpha=
|
||||
this.f=1;this.globalCompositeOperation=this.g="source-over";this.fillStyle=this.u=this.strokeStyle=this.A="#000000";this.lineWidth=this.j=1;this.lineCap=this.h="butt";this.lineJoin=this.i="miter";this.miterLimit=this.k=10;this.shadowBlur=this.n=this.shadowOffsetY=this.q=this.shadowOffsetX=this.p=0;this.shadowColor=this.o="rgba(0, 0, 0, 0.0)";this.font=this.v="10px sans-serif";this.textAlign=this.r="start";this.textBaseline=this.s="alphabetic";this.a=[];this.F=[]},H:function(){var a=this.a;this.a=
|
||||
[];return a},e:function(){var a=this.H();if(a.length>0)return eval(this.B.CallFunction('<invoke name="executeCommand" returntype="javascript"><arguments><string>'+a.join("�")+"</string></arguments></invoke>"))},I:function(a,b){this.e();this.D();if(a>0)this.B.width=a;if(b>0)this.B.height=b;this.a.push(e.resize,a,b)}};t.prototype={addColorStop:function(a,b){if(isNaN(a)||a<0||a>1)i(1);this.G.a.push(e.addColorStop,this.id,a,b)}};D.prototype=Error();var T={1:"INDEX_SIZE_ERR",9:"NOT_SUPPORTED_ERR",11:"INVALID_STATE_ERR",
|
||||
12:"SYNTAX_ERR",17:"TYPE_MISMATCH_ERR",18:"SECURITY_ERR"},B={initElement:function(a){if(a.getContext)return a;var b=a.uniqueID,c="external"+b;x[b]=false;n[b]=1;Q(a);a.innerHTML='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+location.protocol+'//fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="100%" height="100%" id="'+c+'"><param name="allowScriptAccess" value="always"><param name="flashvars" value="id='+c+'"><param name="wmode" value="transparent"></object><span style="margin:0;padding:0;border:0;display:inline-block;position:static;height:1em;overflow:visible;white-space:nowrap"></span>';
|
||||
s[b]=a;var d=a.firstChild;y[b]=a.lastChild;var f=j.body.contains;if(f(a))d.movie=w;else var g=setInterval(function(){if(f(a)){clearInterval(g);d.movie=w}},0);if(j.compatMode==="BackCompat"||!h.XMLHttpRequest)y[b].style.overflow="hidden";var o=new u(a,d);a.getContext=function(l){return l==="2d"?o:k};a.toDataURL=function(l,z){(""+l).replace(/[A-Z]+/g,W)==="image/jpeg"?o.a.push(e.toDataURL,l,typeof z==="number"?z:""):o.a.push(e.toDataURL,l);return o.e()};d.attachEvent(K,G);return a},saveImage:function(a){a.firstChild.saveImage()},
|
||||
setOptions:function(){},trigger:function(a,b){s[a].fireEvent("on"+b)},unlock:function(a,b){n[a]&&--n[a];if(b){var c=s[a],d=c.firstChild,f,g;Q(c);f=c.width;g=c.height;c.style.width=f+"px";c.style.height=g+"px";if(f>0)d.width=f;if(g>0)d.height=g;d.resize(f,g);c.attachEvent(L,H);x[a]=true}}};j.createElement(r);j.createStyleSheet().cssText=r+"{display:inline-block;overflow:hidden;width:300px;height:150px}";j.readyState==="complete"?A():j.attachEvent(F,A);h.attachEvent(J,I);if(w.indexOf(location.protocol+
|
||||
"//"+location.host+"/")===0){var S=new ActiveXObject("Microsoft.XMLHTTP");S.open("GET",w,false);S.send(k)}h[M]=u;h[N]=t;h[O]=E;h[C]=B;h[P]={init:function(){},init_:function(){},initElement:B.initElement};keep=u.measureText}(window,document);
|
||||
BIN
js/flashcanvas.swf
Executable file
24
js/highlight/LICENSE
Normal file
@@ -0,0 +1,24 @@
|
||||
Copyright (c) 2006, Ivan Sagalaev
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of highlight.js nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
143
js/highlight/README.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# Highlight.js
|
||||
|
||||
Highlight.js highlights syntax in code examples on blogs, forums and,
|
||||
in fact, on any web page. It's very easy to use because it works
|
||||
automatically: finds blocks of code, detects a language, highlights it.
|
||||
|
||||
Autodetection can be fine tuned when it fails by itself (see "Heuristics").
|
||||
|
||||
|
||||
## Basic usage
|
||||
|
||||
Link the library and a stylesheet from your page and hook highlighting to
|
||||
the page load event:
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="styles/default.css">
|
||||
<script src="highlight.pack.js"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
```
|
||||
|
||||
This will highlight all code on the page marked up as `<pre><code> .. </code></pre>`.
|
||||
If you use different markup or need to apply highlighting dynamically, read
|
||||
"Custom initialization" below.
|
||||
|
||||
- You can download your own customized version of "highlight.pack.js" or
|
||||
use the hosted one as described on the download page:
|
||||
<http://softwaremaniacs.org/soft/highlight/en/download/>
|
||||
|
||||
- Style themes are available in the download package or as hosted files.
|
||||
To create a custom style for your site see the class reference in the file
|
||||
[classref.txt][cr] from the downloaded package.
|
||||
|
||||
[cr]: http://github.com/isagalaev/highlight.js/blob/master/classref.txt
|
||||
|
||||
|
||||
## node.js
|
||||
|
||||
Highlight.js can be used under node.js. The package with all supported languages is
|
||||
installable from NPM:
|
||||
|
||||
npm install highlight.js
|
||||
|
||||
Alternatively, you can build it from the source with only languages you need:
|
||||
|
||||
python tools/build.py -tnode lang1 lang2 ..
|
||||
|
||||
Using the library:
|
||||
|
||||
```javascript
|
||||
var hljs = require('highlight.js');
|
||||
|
||||
// If you know the language
|
||||
hljs.highlight(lang, code).value;
|
||||
|
||||
// Automatic language detection
|
||||
hljs.highlightAuto(code).value;
|
||||
```
|
||||
|
||||
## Tab replacement
|
||||
|
||||
You can replace TAB ('\x09') characters used for indentation in your code
|
||||
with some fixed number of spaces or with a `<span>` to give them special
|
||||
styling:
|
||||
|
||||
```html
|
||||
<script type="text/javascript">
|
||||
hljs.tabReplace = ' '; // 4 spaces
|
||||
// ... or
|
||||
hljs.tabReplace = '<span class="indent">\t</span>';
|
||||
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script>
|
||||
```
|
||||
|
||||
## Custom initialization
|
||||
|
||||
If you use different markup for code blocks you can initialize them manually
|
||||
with `highlightBlock(code, tabReplace, useBR)` function. It takes a DOM element
|
||||
containing the code to highlight and optionally a string with which to replace
|
||||
TAB characters.
|
||||
|
||||
Initialization using, for example, jQuery might look like this:
|
||||
|
||||
```javascript
|
||||
$(document).ready(function() {
|
||||
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
|
||||
});
|
||||
```
|
||||
|
||||
You can use `highlightBlock` to highlight blocks dynamically inserted into
|
||||
the page. Just make sure you don't do it twice for already highlighted
|
||||
blocks.
|
||||
|
||||
If your code container relies on `<br>` tags instead of line breaks (i.e. if
|
||||
it's not `<pre>`) pass `true` into the third parameter of `highlightBlock`
|
||||
to make highlight.js use `<br>` in the output:
|
||||
|
||||
```javascript
|
||||
$('div.code').each(function(i, e) {hljs.highlightBlock(e, null, true)});
|
||||
```
|
||||
|
||||
|
||||
## Heuristics
|
||||
|
||||
Autodetection of a code's language is done using a simple heuristic:
|
||||
the program tries to highlight a fragment with all available languages and
|
||||
counts all syntactic structures that it finds along the way. The language
|
||||
with greatest count wins.
|
||||
|
||||
This means that in short fragments the probability of an error is high
|
||||
(and it really happens sometimes). In this cases you can set the fragment's
|
||||
language explicitly by assigning a class to the `<code>` element:
|
||||
|
||||
```html
|
||||
<pre><code class="html">...</code></pre>
|
||||
```
|
||||
|
||||
You can use class names recommended in HTML5: "language-html",
|
||||
"language-php". Classes also can be assigned to the `<pre>` element.
|
||||
|
||||
To disable highlighting of a fragment altogether use "no-highlight" class:
|
||||
|
||||
```html
|
||||
<pre><code class="no-highlight">...</code></pre>
|
||||
```
|
||||
|
||||
|
||||
## Export
|
||||
|
||||
File export.html contains a little program that allows you to paste in a code
|
||||
snippet and then copy and paste the resulting HTML code generated by the
|
||||
highlighter. This is useful in situations when you can't use the script itself
|
||||
on a site.
|
||||
|
||||
|
||||
## Meta
|
||||
|
||||
- Version: 7.1
|
||||
- URL: http://softwaremaniacs.org/soft/highlight/en/
|
||||
- Author: Ivan Sagalaev (<maniac@softwaremaniacs.org>)
|
||||
|
||||
For the license terms see LICENSE files.
|
||||
For the list of contributors see AUTHORS.en.txt file.
|
||||
149
js/highlight/README.ru.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Highlight.js
|
||||
|
||||
Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах,
|
||||
форумах и вообще на любых веб-страницах. Пользоваться им очень просто,
|
||||
потому что работает он автоматически: сам находит блоки кода, сам
|
||||
определяет язык, сам подсвечивает.
|
||||
|
||||
Автоопределением языка можно управлять, когда оно не справляется само (см.
|
||||
дальше "Эвристика").
|
||||
|
||||
|
||||
## Простое использование
|
||||
|
||||
Подключите библиотеку и стиль на страницу и повесть вызов подсветки на
|
||||
загрузку страницы:
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="styles/default.css">
|
||||
<script src="highlight.pack.js"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
```
|
||||
|
||||
Весь код на странице, обрамлённый в теги `<pre><code> .. </code></pre>`
|
||||
будет автоматически подсвечен. Если вы используете другие теги или хотите
|
||||
подсвечивать блоки кода динамически, читайте "Инициализацию вручную" ниже.
|
||||
|
||||
- Вы можете скачать собственную версию "highlight.pack.js" или сослаться
|
||||
на захостенный файл, как описано на странице загрузки:
|
||||
<http://softwaremaniacs.org/soft/highlight/download/>
|
||||
|
||||
- Стилевые темы можно найти в загруженном архиве или также использовать
|
||||
захостенные. Чтобы сделать собственный стиль для своего сайта, вам
|
||||
будет полезен справочник классов в файле [classref.txt][cr], который тоже
|
||||
есть в архиве.
|
||||
|
||||
[cr]: http://github.com/isagalaev/highlight.js/blob/master/classref.txt
|
||||
|
||||
|
||||
## node.js
|
||||
|
||||
Highlight.js можно использовать в node.js. Библиотеку со всеми возможными языками можно
|
||||
установить с NPM:
|
||||
|
||||
npm install highlight.js
|
||||
|
||||
Также её можно собрать из исходников с только теми языками, которые нужны:
|
||||
|
||||
python tools/build.py -tnode lang1 lang2 ..
|
||||
|
||||
Использование библиотеки:
|
||||
|
||||
```javascript
|
||||
var hljs = require('highlight.js');
|
||||
|
||||
// Если вы знаете язык
|
||||
hljs.highlight(lang, code).value;
|
||||
|
||||
// Автоопределение языка
|
||||
hljs.highlightAuto(code).value;
|
||||
```
|
||||
|
||||
|
||||
## Замена TABов
|
||||
|
||||
Также вы можете заменить символы TAB ('\x09'), используемые для отступов, на
|
||||
фиксированное количество пробелов или на отдельный `<span>`, чтобы задать ему
|
||||
какой-нибудь специальный стиль:
|
||||
|
||||
```html
|
||||
<script type="text/javascript">
|
||||
hljs.tabReplace = ' '; // 4 spaces
|
||||
// ... or
|
||||
hljs.tabReplace = '<span class="indent">\t</span>';
|
||||
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script>
|
||||
```
|
||||
|
||||
|
||||
## Инициализация вручную
|
||||
|
||||
Если вы используете другие теги для блоков кода, вы можете инициализировать их
|
||||
явно с помощью функции `highlightBlock(code, tabReplace, useBR)`. Она принимает
|
||||
DOM-элемент с текстом расцвечиваемого кода и опционально - строчку для замены
|
||||
символов TAB.
|
||||
|
||||
Например с использованием jQuery код инициализации может выглядеть так:
|
||||
|
||||
```javascript
|
||||
$(document).ready(function() {
|
||||
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
|
||||
});
|
||||
```
|
||||
|
||||
`highlightBlock` можно также использовать, чтобы подсветить блоки кода,
|
||||
добавленные на страницу динамически. Только убедитесь, что вы не делаете этого
|
||||
повторно для уже раскрашенных блоков.
|
||||
|
||||
Если ваш блок кода использует `<br>` вместо переводов строки (т.е. если это не
|
||||
`<pre>`), передайте `true` третьим параметром в `highlightBlock`:
|
||||
|
||||
```javascript
|
||||
$('div.code').each(function(i, e) {hljs.highlightBlock(e, null, true)});
|
||||
```
|
||||
|
||||
|
||||
## Эвристика
|
||||
|
||||
Определение языка, на котором написан фрагмент, делается с помощью
|
||||
довольно простой эвристики: программа пытается расцветить фрагмент всеми
|
||||
языками подряд, и для каждого языка считает количество подошедших
|
||||
синтаксически конструкций и ключевых слов. Для какого языка нашлось больше,
|
||||
тот и выбирается.
|
||||
|
||||
Это означает, что в коротких фрагментах высока вероятность ошибки, что
|
||||
периодически и случается. Чтобы указать язык фрагмента явно, надо написать
|
||||
его название в виде класса к элементу `<code>`:
|
||||
|
||||
```html
|
||||
<pre><code class="html">...</code></pre>
|
||||
```
|
||||
|
||||
Можно использовать рекомендованные в HTML5 названия классов:
|
||||
"language-html", "language-php". Также можно назначать классы на элемент
|
||||
`<pre>`.
|
||||
|
||||
Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight":
|
||||
|
||||
```html
|
||||
<pre><code class="no-highlight">...</code></pre>
|
||||
```
|
||||
|
||||
|
||||
## Экспорт
|
||||
|
||||
В файле export.html находится небольшая программка, которая показывает и дает
|
||||
скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода.
|
||||
Это может понадобится например на сайте, на котором нельзя подключить сам скрипт
|
||||
highlight.js.
|
||||
|
||||
|
||||
## Координаты
|
||||
|
||||
- Версия: 7.1
|
||||
- URL: http://softwaremaniacs.org/soft/highlight/
|
||||
- Автор: Иван Сагалаев (<maniac@softwaremaniacs.org>)
|
||||
|
||||
Лицензионное соглашение читайте в файле LICENSE.
|
||||
Список соавторов читайте в файле AUTHORS.ru.txt
|
||||
553
js/highlight/classref.txt
Normal file
@@ -0,0 +1,553 @@
|
||||
This is a full list of available classes corresponding to languages'
|
||||
syntactic structures. The parentheses after language name contain identifiers
|
||||
used as class names in `<code>` element.
|
||||
|
||||
Python ("python"):
|
||||
|
||||
keyword keyword
|
||||
built_in built-in objects (None, False, True and Ellipsis)
|
||||
number number
|
||||
string string (of any type)
|
||||
comment comment
|
||||
decorator @-decorator for functions
|
||||
function function header "def some_name(...):"
|
||||
class class header "class SomeName(...):"
|
||||
title name of a function or a class inside a header
|
||||
params everything inside parentheses in a function's or class' header
|
||||
|
||||
Python profiler results ("profile"):
|
||||
|
||||
number number
|
||||
string string
|
||||
builtin builtin function entry
|
||||
filename filename in an entry
|
||||
summary profiling summary
|
||||
header header of table of results
|
||||
keyword column header
|
||||
function function name in an entry (including parentheses)
|
||||
title actual name of a function in an entry (excluding parentheses)
|
||||
|
||||
Ruby ("ruby"):
|
||||
|
||||
keyword keyword
|
||||
string string
|
||||
subst in-string substitution (#{...})
|
||||
comment comment
|
||||
yardoctag YARD tag
|
||||
function function header "def some_name(...):"
|
||||
class class header "class SomeName(...):"
|
||||
title name of a function or a class inside a header
|
||||
parent name of a parent class
|
||||
symbol symbol
|
||||
|
||||
Perl ("perl"):
|
||||
|
||||
keyword keyword
|
||||
comment comment
|
||||
number number
|
||||
string string
|
||||
regexp regular expression
|
||||
sub subroutine header (from "sub" till "{")
|
||||
variable variable starting with "$", "%", "@"
|
||||
operator operator
|
||||
pod plain old doc
|
||||
|
||||
PHP ("php"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string (of any type)
|
||||
comment comment
|
||||
phpdoc phpdoc params in comments
|
||||
variable variable starting with "$"
|
||||
preprocessor preprocessor marks: "<?php" and "?>"
|
||||
|
||||
Scala ("scala"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
annotaion annotation
|
||||
javadoc javadoc comment
|
||||
javadoctag @-tag in javadoc
|
||||
class class header
|
||||
title class name inside a header
|
||||
params everything in parentheses inside a class header
|
||||
inheritance keywords "extends" and "with" inside class header
|
||||
|
||||
Go language ("go"):
|
||||
comment comment
|
||||
string string constant
|
||||
number number
|
||||
keyword language keywords
|
||||
constant true false nil iota
|
||||
typename built-in plain types (int, string etc.)
|
||||
built_in built-in functions
|
||||
|
||||
XML ("xml"):
|
||||
|
||||
tag any tag from "<" till ">"
|
||||
comment comment
|
||||
pi processing instruction (<? ... ?>)
|
||||
cdata CDATA section
|
||||
attribute attribute
|
||||
value attribute's value
|
||||
|
||||
HTML ("html"):
|
||||
|
||||
keyword HTML tag
|
||||
tag any tag from "<" till ">"
|
||||
comment comment
|
||||
doctype <!DOCTYPE ... > declaration
|
||||
attribute tag's attribute with or without value
|
||||
value attribute's value
|
||||
|
||||
CSS ("css"):
|
||||
|
||||
tag HTML tag in selectors
|
||||
id #some_name in selectors
|
||||
class .some_name in selectors
|
||||
at_rule @-rule till first "{" or ";"
|
||||
attr_selector attribute selector (square brackets in a[href^=http://])
|
||||
pseudo pseudo classes and elemens (:after, ::after etc.)
|
||||
comment comment
|
||||
rules everything from "{" till "}"
|
||||
property property name inside a rule
|
||||
value property value inside a rule, from ":" till ";" or
|
||||
till the end of rule block
|
||||
number number within a value
|
||||
string string within a value
|
||||
hexcolor hex color (#FFFFFF) within a value
|
||||
function CSS function within a value
|
||||
params everything between "(" and ")" within a function
|
||||
important "!important" symbol
|
||||
|
||||
Markdown ("markdown"):
|
||||
|
||||
header header
|
||||
bullet list bullet
|
||||
emphasis emphasis
|
||||
strong strong emphasis
|
||||
blockquote blockquote
|
||||
code code
|
||||
horizontal_rule horizontal rule
|
||||
link_label link label
|
||||
link_url link url
|
||||
|
||||
Django ("django"):
|
||||
|
||||
keyword HTML tag in HTML, default tags and default filters in templates
|
||||
tag any tag from "<" till ">"
|
||||
comment comment
|
||||
doctype <!DOCTYPE ... > declaration
|
||||
attribute tag's attribute with or withou value
|
||||
value attribute's value
|
||||
template_tag template tag {% .. %}
|
||||
variable template variable {{ .. }}
|
||||
template_comment template comment, both {# .. #} and {% comment %}
|
||||
filter filter from "|" till the next filter or the end of tag
|
||||
argument filter argument
|
||||
|
||||
JSON ("json"):
|
||||
|
||||
number number
|
||||
literal "true", "false" and "null"
|
||||
string string value
|
||||
attribute name of an object property
|
||||
value value of an object property
|
||||
|
||||
JavaScript ("javascript"):
|
||||
|
||||
keyword keyword
|
||||
comment comment
|
||||
number number
|
||||
literal special literal: "true", "false" and "null"
|
||||
string string
|
||||
regexp regular expression
|
||||
function header of a function
|
||||
title name of a function inside a header
|
||||
params parentheses and everything inside them in a function's header
|
||||
|
||||
CoffeeScript ("coffeescript"):
|
||||
|
||||
keyword keyword
|
||||
comment comment
|
||||
number number
|
||||
literal special literal: "true", "false" and "null"
|
||||
string string
|
||||
regexp regular expression
|
||||
function header of a function
|
||||
title name of a function variable inside a header
|
||||
params parentheses and everything inside them in a function's header
|
||||
|
||||
ActionScript ("actionscript"):
|
||||
|
||||
comment comment
|
||||
string string
|
||||
number number
|
||||
keyword keywords
|
||||
literal literal
|
||||
reserved reserved keyword
|
||||
title name of declaration (package, class or function)
|
||||
preprocessor preprocessor directive (import, include)
|
||||
type type of returned value (for functions)
|
||||
package package (named or not)
|
||||
class class/interface
|
||||
function function
|
||||
param params of function
|
||||
rest_arg rest argument of function
|
||||
|
||||
VBScript ("vbscript"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
built_in built-in function
|
||||
|
||||
HTTP ("http"):
|
||||
|
||||
request first line of a request
|
||||
status first line of a response
|
||||
attribute header name
|
||||
string header value or query string in a request line
|
||||
number status code
|
||||
|
||||
Lua ("lua"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
built_in built-in operator
|
||||
function header of a function
|
||||
title name of a function inside a header
|
||||
params everything inside parentheses in a function's header
|
||||
long_brackets multiline string in [=[ .. ]=]
|
||||
|
||||
Delphi ("delphi"):
|
||||
|
||||
keyword keyword
|
||||
comment comment (of any type)
|
||||
number number
|
||||
string string
|
||||
function header of a function, procedure, constructor and destructor
|
||||
title name of a function, procedure, constructor or destructor
|
||||
inside a header
|
||||
params everything inside parentheses in a function's header
|
||||
class class' body from "= class" till "end;"
|
||||
|
||||
Java ("java"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
annotaion annotation
|
||||
javadoc javadoc comment
|
||||
class class header from "class" till "{"
|
||||
title class name inside a header
|
||||
params everything in parentheses inside a class header
|
||||
inheritance keywords "extends" and "implements" inside class header
|
||||
|
||||
C++ ("cpp"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string and character
|
||||
comment comment
|
||||
preprocessor preprocessor directive
|
||||
stl_container instantiation of STL containers ("vector<...>")
|
||||
|
||||
Objective C ("objectivec"):
|
||||
keyword keyword
|
||||
built_in Cocoa/Cocoa Touch constants and classes
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
preprocessor preprocessor directive
|
||||
class interface/implementation, protocol and forward class declaration
|
||||
variable properties and struct accesors
|
||||
|
||||
Vala ("vala"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
class class definitions
|
||||
title in class definition
|
||||
constant ALL_UPPER_CASE
|
||||
|
||||
C# ("cs"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
xmlDocTag xmldoc tag ("///", "<!--", "-->", "<..>")
|
||||
|
||||
D language ("d"):
|
||||
|
||||
comment comment
|
||||
string string constant
|
||||
number number
|
||||
keyword language keywords (including @attributes)
|
||||
constant true false null
|
||||
built_in built-in plain types (int, string etc.)
|
||||
|
||||
RenderMan RSL ("rsl"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string (including @"..")
|
||||
comment comment
|
||||
preprocessor preprocessor directive
|
||||
shader sahder keywords
|
||||
shading shading keywords
|
||||
built_in built-in function
|
||||
|
||||
RenderMan RIB ("rib"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
commands command
|
||||
|
||||
Maya Embedded Language ("mel"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
variable variable
|
||||
|
||||
SQL ("sql"):
|
||||
|
||||
keyword keyword (mostly SQL'92 and SQL'99)
|
||||
number number
|
||||
string string (of any type: "..", '..', `..`)
|
||||
comment comment
|
||||
aggregate aggregate function
|
||||
|
||||
Smalltalk ("smalltalk"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
symbol symbol
|
||||
array array
|
||||
class name of a class
|
||||
char char
|
||||
localvars block of local variables
|
||||
|
||||
Lisp ("lisp"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
variable variable
|
||||
literal b, t and nil
|
||||
list non-quoted list
|
||||
title first symbol in a non-quoted list
|
||||
body remainder of the non-quoted list
|
||||
quoted quoted list, both "(quote .. )" and "'(..)"
|
||||
|
||||
Clojure ("clojure"):
|
||||
|
||||
comment comments and hints
|
||||
string string
|
||||
number number
|
||||
collection collections
|
||||
attribute :keyword
|
||||
title function name (built-in or user defined)
|
||||
built_in built-in function name
|
||||
|
||||
Ini ("ini"):
|
||||
|
||||
title title of a section
|
||||
value value of a setting of any type
|
||||
string string
|
||||
number number
|
||||
keyword boolean value keyword
|
||||
|
||||
Apache ("apache"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
comment commment
|
||||
literal On and Off
|
||||
sqbracket variables in rewrites "%{..}"
|
||||
cbracket options in rewrites "[..]"
|
||||
tag begin and end of a configuration section
|
||||
|
||||
Nginx ("nginx"):
|
||||
|
||||
title directive title
|
||||
string string
|
||||
number number
|
||||
comment comment
|
||||
built_in built-in constant
|
||||
variable $-variable
|
||||
regexp regexp
|
||||
|
||||
Diff ("diff"):
|
||||
|
||||
header file header
|
||||
chunk chunk header within a file
|
||||
addition added lines
|
||||
deletion deleted lines
|
||||
change changed lines
|
||||
|
||||
DOS ("dos"):
|
||||
|
||||
keyword keyword
|
||||
flow batch control keyword
|
||||
stream DOS special files ("con", "prn", ...)
|
||||
winutils some commands (see dos.js specifically)
|
||||
envvar environment variables
|
||||
|
||||
Bash ("bash"):
|
||||
|
||||
keyword keyword
|
||||
string string
|
||||
number number
|
||||
comment comment
|
||||
literal special literal: "true" и "false"
|
||||
variable variable
|
||||
shebang script interpreter header
|
||||
|
||||
CMake ("cmake")
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
envvar $-variable
|
||||
|
||||
Axapta ("axapta"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
class class header from "class" till "{"
|
||||
title class name inside a header
|
||||
params everything in parentheses inside a class header
|
||||
inheritance keywords "extends" and "implements" inside class header
|
||||
preprocessor preprocessor directive
|
||||
|
||||
1C ("1c"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
date date
|
||||
string string
|
||||
comment commment
|
||||
function header of function or procudure
|
||||
title function name inside a header
|
||||
params everything in parentheses inside a function header
|
||||
preprocessor preprocessor directive
|
||||
|
||||
AVR assembler ("avrasm"):
|
||||
|
||||
keyword keyword
|
||||
built_in pre-defined register
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
label label
|
||||
preprocessor preprocessor directive
|
||||
localvars substitution in .macro
|
||||
|
||||
VHDL ("vhdl")
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment commment
|
||||
literal signal logical value
|
||||
typename typename
|
||||
attribute signal attribute
|
||||
|
||||
Parser3 ("parser3"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
comment commment
|
||||
variable variable starting with "$"
|
||||
preprocessor preprocessor directive
|
||||
title user-defined name starting with "@"
|
||||
|
||||
TeX ("tex"):
|
||||
|
||||
comment comment
|
||||
number number
|
||||
command command
|
||||
parameter parameter
|
||||
formula formula
|
||||
special special symbol
|
||||
|
||||
Haskell ("haskell"):
|
||||
|
||||
keyword keyword
|
||||
number number
|
||||
string string
|
||||
comment comment
|
||||
class type classes and other data types
|
||||
title function name
|
||||
type type class name
|
||||
typedef definition of types (type, newtype, data)
|
||||
|
||||
Erlang ("erlang"):
|
||||
|
||||
comment comment
|
||||
string string
|
||||
number number
|
||||
keyword keyword
|
||||
record_name record access (#record_name)
|
||||
title name of declaration function
|
||||
variable variable (starts with capital letter or with _)
|
||||
pp.keywords module's attribute (-attribute)
|
||||
function_name atom or atom:atom in case of function call
|
||||
|
||||
Rust ("rust"):
|
||||
|
||||
comment comment
|
||||
string string
|
||||
number number
|
||||
keyword keyword
|
||||
title name of declaration
|
||||
preprocessor preprocessor directive
|
||||
|
||||
Matlab ("matlab"):
|
||||
|
||||
comment comment
|
||||
string string
|
||||
number number
|
||||
keyword keyword
|
||||
title function name
|
||||
function function
|
||||
param params of function
|
||||
|
||||
R ("r"):
|
||||
|
||||
comment comment
|
||||
string string constant
|
||||
number number
|
||||
keyword language keywords (function, if) plus "structural"
|
||||
functions (attach, require, setClass)
|
||||
literal special literal: TRUE, FALSE, NULL, NA, etc.
|
||||
|
||||
OpenGL Shading Language ("glsl"):
|
||||
|
||||
comment comment
|
||||
number number
|
||||
preprocessor preprocessor directive
|
||||
keyword keyword
|
||||
built_in GLSL built-in functions and variables
|
||||
literal true false
|
||||
1
js/highlight/highlight.pack.js
Normal file
155
js/highlight/styles/arta.css
Normal file
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
Date: 17.V.2011
|
||||
Author: pumbur <pumbur@pumbur.net>
|
||||
*/
|
||||
|
||||
pre code
|
||||
{
|
||||
display: block; padding: 0.5em;
|
||||
background: #222;
|
||||
}
|
||||
|
||||
pre .profile .header *,
|
||||
pre .ini .title,
|
||||
pre .nginx .title
|
||||
{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .javadoc,
|
||||
pre .preprocessor,
|
||||
pre .preprocessor .title,
|
||||
pre .shebang,
|
||||
pre .profile .summary,
|
||||
pre .diff,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .tag,
|
||||
pre .template_comment,
|
||||
pre .css .rules,
|
||||
pre .tex .special
|
||||
{
|
||||
color: #444;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .symbol,
|
||||
pre .diff .change,
|
||||
pre .regexp,
|
||||
pre .xml .attribute,
|
||||
pre .smalltalk .char,
|
||||
pre .xml .value,
|
||||
pre .ini .value,
|
||||
pre .clojure .attribute
|
||||
{
|
||||
color: #ffcc33;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .addition
|
||||
{
|
||||
color: #00cc66;
|
||||
}
|
||||
|
||||
pre .built_in,
|
||||
pre .literal,
|
||||
pre .vhdl .typename,
|
||||
pre .go .constant,
|
||||
pre .go .typename,
|
||||
pre .ini .keyword,
|
||||
pre .lua .title,
|
||||
pre .perl .variable,
|
||||
pre .php .variable,
|
||||
pre .mel .variable,
|
||||
pre .django .variable,
|
||||
pre .css .funtion,
|
||||
pre .smalltalk .method,
|
||||
pre .hexcolor,
|
||||
pre .important,
|
||||
pre .flow,
|
||||
pre .inheritance,
|
||||
pre .parser3 .variable
|
||||
{
|
||||
color: #32AAEE;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .tag .title,
|
||||
pre .css .tag,
|
||||
pre .css .class,
|
||||
pre .css .id,
|
||||
pre .css .pseudo,
|
||||
pre .css .attr_selector,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .winutils,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status
|
||||
{
|
||||
color: #6644aa;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .ruby .constant,
|
||||
pre .vala .constant,
|
||||
pre .parent,
|
||||
pre .deletion,
|
||||
pre .template_tag,
|
||||
pre .css .keyword,
|
||||
pre .objectivec .class .id,
|
||||
pre .smalltalk .class,
|
||||
pre .lisp .keyword,
|
||||
pre .apache .tag,
|
||||
pre .nginx .variable,
|
||||
pre .envvar,
|
||||
pre .bash .variable,
|
||||
pre .go .built_in,
|
||||
pre .vbscript .built_in,
|
||||
pre .lua .built_in,
|
||||
pre .rsl .built_in,
|
||||
pre .tail,
|
||||
pre .avrasm .label,
|
||||
pre .tex .formula,
|
||||
pre .tex .formula *
|
||||
{
|
||||
color: #bb1166;
|
||||
}
|
||||
|
||||
pre .yardoctag,
|
||||
pre .phpdoc,
|
||||
pre .profile .header,
|
||||
pre .ini .title,
|
||||
pre .apache .tag,
|
||||
pre .parser3 .title
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .cdata
|
||||
{
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .javascript,
|
||||
pre .css,
|
||||
pre .xml,
|
||||
pre .subst,
|
||||
pre .diff .chunk,
|
||||
pre .css .value,
|
||||
pre .css .attribute,
|
||||
pre .lisp .string,
|
||||
pre .lisp .number,
|
||||
pre .tail .params,
|
||||
pre .container,
|
||||
pre .haskell *,
|
||||
pre .erlang *,
|
||||
pre .erlang_repl *
|
||||
{
|
||||
color: #aaa;
|
||||
}
|
||||
50
js/highlight/styles/ascetic.css
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
|
||||
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: white; color: black;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .filter .argument,
|
||||
pre .addition,
|
||||
pre .change,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .formula {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .shebang,
|
||||
pre .doctype,
|
||||
pre .pi,
|
||||
pre .javadoc,
|
||||
pre .deletion,
|
||||
pre .apache .sqbracket {
|
||||
color: #CCC;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .tag .title,
|
||||
pre .ini .title,
|
||||
pre .lisp .title,
|
||||
pre .clojure .title,
|
||||
pre .http .title,
|
||||
pre .nginx .title,
|
||||
pre .css .tag,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .apache .tag,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
102
js/highlight/styles/brown_paper.css
Normal file
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
|
||||
Brown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background:#b7a68e url(./brown_papersq.png);
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .change,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title,
|
||||
pre .tex .special,
|
||||
pre .request,
|
||||
pre .status {
|
||||
color:#005599;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .ruby .subst,
|
||||
pre .tag .keyword {
|
||||
color: #363C69;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .tag .value,
|
||||
pre .css .rules .value,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .ruby .class .parent,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoc,
|
||||
pre .ruby .string,
|
||||
pre .django .filter .argument,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .addition,
|
||||
pre .stream,
|
||||
pre .envvar,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .number {
|
||||
color: #2C009F;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .java .annotation,
|
||||
pre .python .decorator,
|
||||
pre .template_comment,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .formula {
|
||||
color: #802022;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .css .id,
|
||||
pre .phpdoc,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .tex .command {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.8;
|
||||
}
|
||||
BIN
js/highlight/styles/brown_papersq.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
101
js/highlight/styles/dark.css
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
|
||||
Dark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #444;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .change,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title,
|
||||
pre .tex .special {
|
||||
color: white;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .ruby .subst {
|
||||
color: #DDD;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .ini .title,
|
||||
pre .tag .value,
|
||||
pre .css .rules .value,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .ruby .class .parent,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoc,
|
||||
pre .ruby .string,
|
||||
pre .django .filter .argument,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .addition,
|
||||
pre .stream,
|
||||
pre .envvar,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .command,
|
||||
pre .input_number {
|
||||
color: #D88;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .java .annotation,
|
||||
pre .python .decorator,
|
||||
pre .template_comment,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket,
|
||||
pre .tex .formula {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .title,
|
||||
pre .css .id,
|
||||
pre .phpdoc,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .tex .special,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
132
js/highlight/styles/default.css
Normal file
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
|
||||
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #F0F0F0;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .ruby .subst,
|
||||
pre .tag .title,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title {
|
||||
color: black;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .constant,
|
||||
pre .parent,
|
||||
pre .tag .value,
|
||||
pre .rules .value,
|
||||
pre .rules .value .number,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .aggregate,
|
||||
pre .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .addition,
|
||||
pre .flow,
|
||||
pre .stream,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .command,
|
||||
pre .tex .special,
|
||||
pre .erlang_repl .function_or_atom,
|
||||
pre .markdown .header {
|
||||
color: #800;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .annotation,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .markdown .blockquote {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .date,
|
||||
pre .regexp,
|
||||
pre .literal,
|
||||
pre .smalltalk .symbol,
|
||||
pre .smalltalk .char,
|
||||
pre .go .constant,
|
||||
pre .change,
|
||||
pre .markdown .bullet,
|
||||
pre .markdown .link_url {
|
||||
color: #080;
|
||||
}
|
||||
|
||||
pre .label,
|
||||
pre .javadoc,
|
||||
pre .ruby .string,
|
||||
pre .decorator,
|
||||
pre .filter .argument,
|
||||
pre .localvars,
|
||||
pre .array,
|
||||
pre .attr_selector,
|
||||
pre .important,
|
||||
pre .pseudo,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .envvar,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .formula,
|
||||
pre .erlang_repl .reserved,
|
||||
pre .input_number,
|
||||
pre .markdown .link_label,
|
||||
pre .vhdl .attribute,
|
||||
pre .clojure .attribute {
|
||||
color: #88F
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .id,
|
||||
pre .phpdoc,
|
||||
pre .title,
|
||||
pre .built_in,
|
||||
pre .aggregate,
|
||||
pre .css .tag,
|
||||
pre .javadoctag,
|
||||
pre .phpdoc,
|
||||
pre .yardoctag,
|
||||
pre .smalltalk .class,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .go .typename,
|
||||
pre .tex .command,
|
||||
pre .markdown .strong,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .markdown .emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .nginx .built_in {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
111
js/highlight/styles/far.css
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
|
||||
FAR Style (c) MajestiC <majestic2k@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #000080;
|
||||
}
|
||||
|
||||
pre code,
|
||||
.ruby .subst {
|
||||
color: #0FF;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .ruby .string,
|
||||
pre .haskell .type,
|
||||
pre .tag .value,
|
||||
pre .css .rules .value,
|
||||
pre .css .rules .value .number,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .addition,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .command,
|
||||
pre .clojure .title {
|
||||
color: #FF0;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .css .id,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .xml .tag .title,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .change,
|
||||
pre .envvar,
|
||||
pre .bash .variable,
|
||||
pre .tex .special,
|
||||
pre .clojure .built_in {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .phpdoc,
|
||||
pre .javadoc,
|
||||
pre .java .annotation,
|
||||
pre .template_comment,
|
||||
pre .deletion,
|
||||
pre .apache .sqbracket,
|
||||
pre .tex .formula {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .date,
|
||||
pre .regexp,
|
||||
pre .literal,
|
||||
pre .smalltalk .symbol,
|
||||
pre .smalltalk .char,
|
||||
pre .clojure .attribute {
|
||||
color: #0F0;
|
||||
}
|
||||
|
||||
pre .python .decorator,
|
||||
pre .django .filter .argument,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .xml .pi,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .shebang,
|
||||
pre .nginx .built_in,
|
||||
pre .input_number {
|
||||
color: #008080;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .css .id,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .apache .tag,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .command,
|
||||
pre .tex .special,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
131
js/highlight/styles/github.css
Normal file
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
|
||||
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
color: #333;
|
||||
background: #f8f8ff
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .javadoc {
|
||||
color: #998;
|
||||
font-style: italic
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .css .rule .keyword,
|
||||
pre .winutils,
|
||||
pre .javascript .title,
|
||||
pre .nginx .title,
|
||||
pre .subst,
|
||||
pre .request,
|
||||
pre .status {
|
||||
color: #333;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .hexcolor,
|
||||
pre .ruby .constant {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .phpdoc,
|
||||
pre .tex .formula {
|
||||
color: #d14
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .id {
|
||||
color: #900;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .javascript .title,
|
||||
pre .lisp .title,
|
||||
pre .clojure .title,
|
||||
pre .subst {
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
pre .class .title,
|
||||
pre .haskell .type,
|
||||
pre .vhdl .literal,
|
||||
pre .tex .command {
|
||||
color: #458;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .tag,
|
||||
pre .tag .title,
|
||||
pre .rules .property,
|
||||
pre .django .tag .keyword {
|
||||
color: #000080;
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .variable,
|
||||
pre .lisp .body {
|
||||
color: #008080
|
||||
}
|
||||
|
||||
pre .regexp {
|
||||
color: #009926
|
||||
}
|
||||
|
||||
pre .class {
|
||||
color: #458;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .lisp .keyword,
|
||||
pre .tex .special,
|
||||
pre .input_number {
|
||||
color: #990073
|
||||
}
|
||||
|
||||
pre .built_in,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in {
|
||||
color: #0086b3
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .shebang,
|
||||
pre .cdata {
|
||||
color: #999;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
background: #fdd
|
||||
}
|
||||
|
||||
pre .addition {
|
||||
background: #dfd
|
||||
}
|
||||
|
||||
pre .diff .change {
|
||||
background: #0086b3
|
||||
}
|
||||
|
||||
pre .chunk {
|
||||
color: #aaa
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
144
js/highlight/styles/googlecode.css
Normal file
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
|
||||
Google Code style (c) Aahan Krish <geekpanth3r@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: white; color: black;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .javadoc,
|
||||
pre .comment * {
|
||||
color: #800;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .method,
|
||||
pre .list .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title,
|
||||
pre .tag .title,
|
||||
pre .setting .value,
|
||||
pre .winutils,
|
||||
pre .tex .command,
|
||||
pre .http .title,
|
||||
pre .request,
|
||||
pre .status {
|
||||
color: #008;
|
||||
}
|
||||
|
||||
pre .envvar,
|
||||
pre .tex .special {
|
||||
color: #660;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .cdata,
|
||||
pre .filter .argument,
|
||||
pre .attr_selector,
|
||||
pre .apache .cbracket,
|
||||
pre .date,
|
||||
pre .regexp {
|
||||
color: #080;
|
||||
}
|
||||
|
||||
pre .sub .identifier,
|
||||
pre .pi,
|
||||
pre .tag,
|
||||
pre .tag .keyword,
|
||||
pre .decorator,
|
||||
pre .ini .title,
|
||||
pre .shebang,
|
||||
pre .input_number,
|
||||
pre .hexcolor,
|
||||
pre .rules .value,
|
||||
pre .css .value .number,
|
||||
pre .literal,
|
||||
pre .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .number,
|
||||
pre .css .function,
|
||||
pre .clojure .attribute {
|
||||
color: #066;
|
||||
}
|
||||
|
||||
pre .class .title,
|
||||
pre .haskell .type,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoctag,
|
||||
pre .yardoctag,
|
||||
pre .phpdoc,
|
||||
pre .typename,
|
||||
pre .tag .attribute,
|
||||
pre .doctype,
|
||||
pre .class .id,
|
||||
pre .built_in,
|
||||
pre .setting,
|
||||
pre .params,
|
||||
pre .variable,
|
||||
pre .clojure .title {
|
||||
color: #606;
|
||||
}
|
||||
|
||||
pre .css .tag,
|
||||
pre .rules .property,
|
||||
pre .pseudo,
|
||||
pre .subst {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
pre .css .class, pre .css .id {
|
||||
color: #9B703F;
|
||||
}
|
||||
|
||||
pre .value .important {
|
||||
color: #ff7700;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .rules .keyword {
|
||||
color: #C5AF75;
|
||||
}
|
||||
|
||||
pre .annotation,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in {
|
||||
color: #9B859D;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .preprocessor * {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background-color: #EEE;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .diff .header,
|
||||
pre .chunk {
|
||||
color: #808080;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .diff .change {
|
||||
background-color: #BCCFF9;
|
||||
}
|
||||
|
||||
pre .addition {
|
||||
background-color: #BAEEBA;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
background-color: #FFC8BD;
|
||||
}
|
||||
|
||||
pre .comment .yardoctag {
|
||||
font-weight: bold;
|
||||
}
|
||||
121
js/highlight/styles/idea.css
Normal file
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
|
||||
Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
pre .subst,
|
||||
pre .title {
|
||||
font-weight: normal;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .javadoc,
|
||||
pre .diff .header {
|
||||
color: #808080;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .annotation,
|
||||
pre .decorator,
|
||||
pre .preprocessor,
|
||||
pre .doctype,
|
||||
pre .pi,
|
||||
pre .chunk,
|
||||
pre .shebang,
|
||||
pre .apache .cbracket,
|
||||
pre .input_number,
|
||||
pre .http .title {
|
||||
color: #808000;
|
||||
}
|
||||
|
||||
pre .tag,
|
||||
pre .pi {
|
||||
background: #efefef;
|
||||
}
|
||||
|
||||
pre .tag .title,
|
||||
pre .id,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .literal,
|
||||
pre .keyword,
|
||||
pre .hexcolor,
|
||||
pre .css .function,
|
||||
pre .ini .title,
|
||||
pre .css .class,
|
||||
pre .list .title,
|
||||
pre .clojure .title,
|
||||
pre .nginx .title,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
color: #000080;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .rules .keyword,
|
||||
pre .number,
|
||||
pre .date,
|
||||
pre .regexp,
|
||||
pre .tex .special {
|
||||
font-weight: bold;
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .regexp {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .value,
|
||||
pre .filter .argument,
|
||||
pre .css .function .params,
|
||||
pre .apache .tag {
|
||||
color: #008000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .char,
|
||||
pre .tex .formula {
|
||||
color: #000;
|
||||
background: #d0eded;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .phpdoc,
|
||||
pre .yardoctag,
|
||||
pre .javadoctag {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
pre .variable,
|
||||
pre .envvar,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in {
|
||||
color: #660e7a;
|
||||
}
|
||||
|
||||
pre .addition {
|
||||
background: #baeeba;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
background: #ffc8bd;
|
||||
}
|
||||
|
||||
pre .diff .change {
|
||||
background: #bccff9;
|
||||
}
|
||||
98
js/highlight/styles/ir_black.css
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru>
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #000; color: #f8f8f8;
|
||||
}
|
||||
|
||||
pre .shebang,
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .javadoc {
|
||||
color: #7c7c7c;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .tag,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .clojure .attribute {
|
||||
color: #96CBFE;
|
||||
}
|
||||
|
||||
pre .sub .keyword,
|
||||
pre .method,
|
||||
pre .list .title,
|
||||
pre .nginx .title {
|
||||
color: #FFFFB6;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .cdata,
|
||||
pre .filter .argument,
|
||||
pre .attr_selector,
|
||||
pre .apache .cbracket,
|
||||
pre .date {
|
||||
color: #A8FF60;
|
||||
}
|
||||
|
||||
pre .subst {
|
||||
color: #DAEFA3;
|
||||
}
|
||||
|
||||
pre .regexp {
|
||||
color: #E9C062;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .sub .identifier,
|
||||
pre .pi,
|
||||
pre .decorator,
|
||||
pre .tex .special,
|
||||
pre .haskell .type,
|
||||
pre .constant,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoctag,
|
||||
pre .yardoctag,
|
||||
pre .phpdoc,
|
||||
pre .nginx .built_in {
|
||||
color: #FFFFB6;
|
||||
}
|
||||
|
||||
pre .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .number,
|
||||
pre .variable,
|
||||
pre .vbscript,
|
||||
pre .literal {
|
||||
color: #C6C5FE;
|
||||
}
|
||||
|
||||
pre .css .tag {
|
||||
color: #96CBFE;
|
||||
}
|
||||
|
||||
pre .css .rules .property,
|
||||
pre .css .id {
|
||||
color: #FFFFB6;
|
||||
}
|
||||
|
||||
pre .css .class {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
pre .hexcolor {
|
||||
color: #C6C5FE;
|
||||
}
|
||||
|
||||
pre .number {
|
||||
color:#FF73FD;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
opacity: 0.7;
|
||||
}
|
||||
119
js/highlight/styles/magula.css
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
Description: Magula style for highligh.js
|
||||
Author: Ruslan Keba <rukeba@gmail.com>
|
||||
Website: http://rukeba.com/
|
||||
Version: 1.0
|
||||
Date: 2009-01-03
|
||||
Music: Aphex Twin / Xtal
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .ruby .subst,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in {
|
||||
color: black;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .parent,
|
||||
pre .tag .value,
|
||||
pre .rules .value,
|
||||
pre .rules .value .number,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .aggregate,
|
||||
pre .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .addition,
|
||||
pre .flow,
|
||||
pre .stream,
|
||||
pre .bash .variable,
|
||||
pre .apache .cbracket {
|
||||
color: #050;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .annotation,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .chunk {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .date,
|
||||
pre .regexp,
|
||||
pre .literal,
|
||||
pre .smalltalk .symbol,
|
||||
pre .smalltalk .char,
|
||||
pre .change,
|
||||
pre .tex .special {
|
||||
color: #800;
|
||||
}
|
||||
|
||||
pre .label,
|
||||
pre .javadoc,
|
||||
pre .ruby .string,
|
||||
pre .decorator,
|
||||
pre .filter .argument,
|
||||
pre .localvars,
|
||||
pre .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .envvar,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .formula,
|
||||
pre .input_number,
|
||||
pre .clojure .attribute {
|
||||
color: #00e;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .id,
|
||||
pre .phpdoc,
|
||||
pre .title,
|
||||
pre .built_in,
|
||||
pre .aggregate,
|
||||
pre .smalltalk .class,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .xml .tag,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
pre .nginx .built_in {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* --- */
|
||||
pre .apache .tag {
|
||||
font-weight: bold;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
112
js/highlight/styles/monokai.css
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
Monokai style - ported by Luigi Maselli - http://grigio.org
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #272822;
|
||||
}
|
||||
|
||||
pre .tag,
|
||||
pre .tag .title,
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .change,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title,
|
||||
pre .tex .special {
|
||||
color: #F92672;
|
||||
}
|
||||
|
||||
pre code {
|
||||
color: #DDD;
|
||||
}
|
||||
|
||||
pre code .constant {
|
||||
color: #66D9EF;
|
||||
}
|
||||
|
||||
pre .class .title {
|
||||
color: white;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .value,
|
||||
pre .regexp {
|
||||
color: #BF79DB;
|
||||
}
|
||||
|
||||
pre .tag .value,
|
||||
pre .string,
|
||||
pre .ruby .subst,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .preprocessor,
|
||||
pre .ruby .class .parent,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoc,
|
||||
pre .django .filter .argument,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .addition,
|
||||
pre .stream,
|
||||
pre .envvar,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .command,
|
||||
pre .input_number {
|
||||
color: #A6E22E;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .java .annotation,
|
||||
pre .python .decorator,
|
||||
pre .template_comment,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket,
|
||||
pre .tex .formula {
|
||||
color: #75715E;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .css .id,
|
||||
pre .phpdoc,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .tex .special,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
104
js/highlight/styles/pojoaque.css
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
|
||||
Pojoaque Style by Jason Tate
|
||||
http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
|
||||
Based on Solarized Style from http://ethanschoonover.com/solarized
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
color: #DCCF8F;
|
||||
background: url(./pojoaque.jpg) repeat scroll left top #181914;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .doctype,
|
||||
pre .lisp .string,
|
||||
pre .javadoc {
|
||||
color: #586e75;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .css .rule .keyword,
|
||||
pre .winutils,
|
||||
pre .javascript .title,
|
||||
pre .method,
|
||||
pre .addition,
|
||||
pre .css .tag,
|
||||
pre .clojure .title,
|
||||
pre .nginx .title {
|
||||
color: #B64926;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .command,
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .phpdoc,
|
||||
pre .tex .formula,
|
||||
pre .regexp,
|
||||
pre .hexcolor {
|
||||
color: #468966;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .localvars,
|
||||
pre .function .title,
|
||||
pre .chunk,
|
||||
pre .decorator,
|
||||
pre .built_in,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .identifier,
|
||||
pre .id {
|
||||
color: #FFB03B;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .variable,
|
||||
pre .lisp .body,
|
||||
pre .smalltalk .number,
|
||||
pre .constant,
|
||||
pre .class .title,
|
||||
pre .parent,
|
||||
pre .haskell .type {
|
||||
color: #b58900;
|
||||
}
|
||||
|
||||
pre .css .attribute {
|
||||
color: #b89859;
|
||||
}
|
||||
|
||||
pre .css .number,pre .css .hexcolor{
|
||||
color: #DCCF8F;
|
||||
}
|
||||
|
||||
pre .css .class {
|
||||
color: #d3a60c;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .pi,
|
||||
pre .shebang,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .diff .change,
|
||||
pre .special,
|
||||
pre .attr_selector,
|
||||
pre .important,
|
||||
pre .subst,
|
||||
pre .cdata {
|
||||
color: #cb4b16;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
color: #dc322f;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background: #073642;
|
||||
}
|
||||
BIN
js/highlight/styles/pojoaque.jpg
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
114
js/highlight/styles/rainbow.css
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
|
||||
Style with support for rainbow parens
|
||||
|
||||
*/
|
||||
|
||||
pre ::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
|
||||
pre ::selection { background:#FF5E99; color:#fff; text-shadow: none; }
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #474949; color: #D1D9E1;
|
||||
}
|
||||
|
||||
|
||||
pre .body,
|
||||
pre .collection {
|
||||
color: #D1D9E1;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .doctype,
|
||||
pre .lisp .string,
|
||||
pre .javadoc {
|
||||
color: #969896;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .clojure .attribute,
|
||||
pre .winutils,
|
||||
pre .javascript .title,
|
||||
pre .addition,
|
||||
pre .css .tag {
|
||||
color: #cc99cc;
|
||||
}
|
||||
|
||||
pre .number { color: #f99157; }
|
||||
|
||||
pre .command,
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .phpdoc,
|
||||
pre .tex .formula,
|
||||
pre .regexp,
|
||||
pre .hexcolor {
|
||||
color: #8abeb7;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .localvars,
|
||||
pre .function .title,
|
||||
pre .chunk,
|
||||
pre .decorator,
|
||||
pre .built_in,
|
||||
pre .lisp .title,
|
||||
pre .identifier
|
||||
{
|
||||
color: #b5bd68;
|
||||
}
|
||||
|
||||
pre .class .keyword
|
||||
{
|
||||
color: #f2777a;
|
||||
}
|
||||
|
||||
pre .variable,
|
||||
pre .lisp .body,
|
||||
pre .smalltalk .number,
|
||||
pre .constant,
|
||||
pre .class .title,
|
||||
pre .parent,
|
||||
pre .haskell .label,
|
||||
pre .id,
|
||||
pre .lisp .title,
|
||||
pre .clojure .title .built_in {
|
||||
color: #ffcc66;
|
||||
}
|
||||
|
||||
pre .tag .title,
|
||||
pre .rules .property,
|
||||
pre .django .tag .keyword,
|
||||
pre .clojure .title .built_in {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .clojure .title {
|
||||
color: #81a2be;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .pi,
|
||||
pre .shebang,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .diff .change,
|
||||
pre .special,
|
||||
pre .attr_selector,
|
||||
pre .important,
|
||||
pre .subst,
|
||||
pre .cdata {
|
||||
color: #f99157;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
color: #dc322f;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background: #eee8d5;
|
||||
}
|
||||
109
js/highlight/styles/school_book.css
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
|
||||
School Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 15px 0.5em 0.5em 30px;
|
||||
font-size: 11px !important;
|
||||
line-height:16px !important;
|
||||
}
|
||||
|
||||
pre{
|
||||
background:#f6f6ae url(./school_book.png);
|
||||
border-top: solid 2px #d2e8b9;
|
||||
border-bottom: solid 1px #d2e8b9;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .change,
|
||||
pre .winutils,
|
||||
pre .flow,
|
||||
pre .lisp .title,
|
||||
pre .clojure .built_in,
|
||||
pre .nginx .title,
|
||||
pre .tex .special {
|
||||
color:#005599;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre .ruby .subst,
|
||||
pre .tag .keyword {
|
||||
color: #3E5915;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .tag .value,
|
||||
pre .css .rules .value,
|
||||
pre .preprocessor,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .ruby .class .parent,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoc,
|
||||
pre .ruby .string,
|
||||
pre .django .filter .argument,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .addition,
|
||||
pre .stream,
|
||||
pre .envvar,
|
||||
pre .apache .tag,
|
||||
pre .apache .cbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .command {
|
||||
color: #2C009F;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .java .annotation,
|
||||
pre .python .decorator,
|
||||
pre .template_comment,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .shebang,
|
||||
pre .apache .sqbracket {
|
||||
color: #E60415;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .css .id,
|
||||
pre .phpdoc,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .vbscript .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .rsl .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .xml .tag .title,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .apache .tag,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
BIN
js/highlight/styles/school_book.png
Normal file
|
After Width: | Height: | Size: 486 B |
88
js/highlight/styles/solarized_dark.css
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
|
||||
Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #002b36; color: #839496;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .doctype,
|
||||
pre .pi,
|
||||
pre .lisp .string,
|
||||
pre .javadoc {
|
||||
color: #586e75;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .winutils,
|
||||
pre .method,
|
||||
pre .addition,
|
||||
pre .css .tag,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .nginx .title {
|
||||
color: #859900;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .command,
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .phpdoc,
|
||||
pre .tex .formula,
|
||||
pre .regexp,
|
||||
pre .hexcolor {
|
||||
color: #2aa198;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .localvars,
|
||||
pre .chunk,
|
||||
pre .decorator,
|
||||
pre .built_in,
|
||||
pre .identifier,
|
||||
pre .vhdl .literal,
|
||||
pre .id {
|
||||
color: #268bd2;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .variable,
|
||||
pre .lisp .body,
|
||||
pre .smalltalk .number,
|
||||
pre .constant,
|
||||
pre .class .title,
|
||||
pre .parent,
|
||||
pre .haskell .type {
|
||||
color: #b58900;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .preprocessor .keyword,
|
||||
pre .shebang,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .diff .change,
|
||||
pre .special,
|
||||
pre .attr_selector,
|
||||
pre .important,
|
||||
pre .subst,
|
||||
pre .cdata,
|
||||
pre .clojure .title {
|
||||
color: #cb4b16;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
color: #dc322f;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background: #073642;
|
||||
}
|
||||
88
js/highlight/styles/solarized_light.css
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
|
||||
Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #fdf6e3; color: #657b83;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .doctype,
|
||||
pre .pi,
|
||||
pre .lisp .string,
|
||||
pre .javadoc {
|
||||
color: #93a1a1;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .winutils,
|
||||
pre .method,
|
||||
pre .addition,
|
||||
pre .css .tag,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .nginx .title {
|
||||
color: #859900;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .command,
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .phpdoc,
|
||||
pre .tex .formula,
|
||||
pre .regexp,
|
||||
pre .hexcolor {
|
||||
color: #2aa198;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .localvars,
|
||||
pre .chunk,
|
||||
pre .decorator,
|
||||
pre .built_in,
|
||||
pre .identifier,
|
||||
pre .vhdl .literal,
|
||||
pre .id {
|
||||
color: #268bd2;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .variable,
|
||||
pre .lisp .body,
|
||||
pre .smalltalk .number,
|
||||
pre .constant,
|
||||
pre .class .title,
|
||||
pre .parent,
|
||||
pre .haskell .type {
|
||||
color: #b58900;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .preprocessor .keyword,
|
||||
pre .shebang,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .diff .change,
|
||||
pre .special,
|
||||
pre .attr_selector,
|
||||
pre .important,
|
||||
pre .subst,
|
||||
pre .cdata,
|
||||
pre .clojure .title {
|
||||
color: #cb4b16;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
color: #dc322f;
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background: #eee8d5;
|
||||
}
|
||||
148
js/highlight/styles/sunburst.css
Normal file
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
|
||||
Sunburst-like style (c) Vasily Polovnyov <vast@whiteants.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #000; color: #f8f8f8;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .javadoc {
|
||||
color: #aeaeae;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .ruby .function .keyword,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .nginx .title {
|
||||
color: #E28964;
|
||||
}
|
||||
|
||||
pre .function .keyword,
|
||||
pre .sub .keyword,
|
||||
pre .method,
|
||||
pre .list .title {
|
||||
color: #99CF50;
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .cdata,
|
||||
pre .filter .argument,
|
||||
pre .attr_selector,
|
||||
pre .apache .cbracket,
|
||||
pre .date,
|
||||
pre .tex .command {
|
||||
color: #65B042;
|
||||
}
|
||||
|
||||
pre .subst {
|
||||
color: #DAEFA3;
|
||||
}
|
||||
|
||||
pre .regexp {
|
||||
color: #E9C062;
|
||||
}
|
||||
|
||||
pre .title,
|
||||
pre .sub .identifier,
|
||||
pre .pi,
|
||||
pre .tag,
|
||||
pre .tag .keyword,
|
||||
pre .decorator,
|
||||
pre .shebang,
|
||||
pre .input_number {
|
||||
color: #89BDFF;
|
||||
}
|
||||
|
||||
pre .class .title,
|
||||
pre .haskell .type,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoctag,
|
||||
pre .yardoctag,
|
||||
pre .phpdoc {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
pre .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .number {
|
||||
color: #3387CC;
|
||||
}
|
||||
|
||||
pre .params,
|
||||
pre .variable,
|
||||
pre .clojure .attribute {
|
||||
color: #3E87E3;
|
||||
}
|
||||
|
||||
pre .css .tag,
|
||||
pre .rules .property,
|
||||
pre .pseudo,
|
||||
pre .tex .special {
|
||||
color: #CDA869;
|
||||
}
|
||||
|
||||
pre .css .class {
|
||||
color: #9B703F;
|
||||
}
|
||||
|
||||
pre .rules .keyword {
|
||||
color: #C5AF75;
|
||||
}
|
||||
|
||||
pre .rules .value {
|
||||
color: #CF6A4C;
|
||||
}
|
||||
|
||||
pre .css .id {
|
||||
color: #8B98AB;
|
||||
}
|
||||
|
||||
pre .annotation,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in {
|
||||
color: #9B859D;
|
||||
}
|
||||
|
||||
pre .preprocessor {
|
||||
color: #8996A8;
|
||||
}
|
||||
|
||||
pre .hexcolor,
|
||||
pre .css .value .number {
|
||||
color: #DD7B3B;
|
||||
}
|
||||
|
||||
pre .css .function {
|
||||
color: #DAD085;
|
||||
}
|
||||
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .tex .formula {
|
||||
background-color: #0E2231;
|
||||
color: #F8F8F8;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .diff .change {
|
||||
background-color: #4A410D;
|
||||
color: #F8F8F8;
|
||||
}
|
||||
|
||||
pre .addition {
|
||||
background-color: #253B22;
|
||||
color: #F8F8F8;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
background-color: #420E09;
|
||||
color: #F8F8F8;
|
||||
}
|
||||
42
js/highlight/styles/tomorrow-night-blue.css
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Tomorrow Night Blue Theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
.tomorrow-comment, pre .comment, pre .title {
|
||||
color: #7285b7;
|
||||
}
|
||||
|
||||
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||
color: #ff9da4;
|
||||
}
|
||||
|
||||
.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||
color: #ffc58f;
|
||||
}
|
||||
|
||||
.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
|
||||
color: #ffeead;
|
||||
}
|
||||
|
||||
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||
color: #d1f1a9;
|
||||
}
|
||||
|
||||
.tomorrow-aqua, pre .css .hexcolor {
|
||||
color: #99ffff;
|
||||
}
|
||||
|
||||
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||
color: #bbdaff;
|
||||
}
|
||||
|
||||
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||
color: #ebbbff;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
background: #002451;
|
||||
color: white;
|
||||
padding: 0.5em;
|
||||
}
|
||||
41
js/highlight/styles/tomorrow-night-bright.css
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Tomorrow Night Bright Theme */
|
||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
.tomorrow-comment, pre .comment, pre .title {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||
color: #d54e53;
|
||||
}
|
||||
|
||||
.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||
color: #e78c45;
|
||||
}
|
||||
|
||||
.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
|
||||
color: #e7c547;
|
||||
}
|
||||
|
||||
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||
color: #b9ca4a;
|
||||
}
|
||||
|
||||
.tomorrow-aqua, pre .css .hexcolor {
|
||||
color: #70c0b1;
|
||||
}
|
||||
|
||||
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||
color: #7aa6da;
|
||||
}
|
||||
|
||||
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||
color: #c397d8;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
background: black;
|
||||
color: #eaeaea;
|
||||
padding: 0.5em;
|
||||
}
|
||||
41
js/highlight/styles/tomorrow-night-eighties.css
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Tomorrow Night Eighties Theme */
|
||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
.tomorrow-comment, pre .comment, pre .title {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||
color: #f2777a;
|
||||
}
|
||||
|
||||
.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||
color: #f99157;
|
||||
}
|
||||
|
||||
.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
|
||||
color: #ffcc66;
|
||||
}
|
||||
|
||||
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||
color: #99cc99;
|
||||
}
|
||||
|
||||
.tomorrow-aqua, pre .css .hexcolor {
|
||||
color: #66cccc;
|
||||
}
|
||||
|
||||
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||
color: #6699cc;
|
||||
}
|
||||
|
||||
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||
color: #cc99cc;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
background: #2d2d2d;
|
||||
color: #cccccc;
|
||||
padding: 0.5em;
|
||||
}
|
||||
42
js/highlight/styles/tomorrow-night.css
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Tomorrow Night Theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
.tomorrow-comment, pre .comment, pre .title {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||
color: #cc6666;
|
||||
}
|
||||
|
||||
.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||
color: #de935f;
|
||||
}
|
||||
|
||||
.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
|
||||
color: #f0c674;
|
||||
}
|
||||
|
||||
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||
color: #b5bd68;
|
||||
}
|
||||
|
||||
.tomorrow-aqua, pre .css .hexcolor {
|
||||
color: #8abeb7;
|
||||
}
|
||||
|
||||
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||
color: #81a2be;
|
||||
}
|
||||
|
||||
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||
color: #b294bb;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
background: #1d1f21;
|
||||
color: #c5c8c6;
|
||||
padding: 0.5em;
|
||||
}
|
||||
39
js/highlight/styles/tomorrow.css
Normal file
@@ -0,0 +1,39 @@
|
||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
||||
.tomorrow-comment, pre .comment, pre .title {
|
||||
color: #8e908c;
|
||||
}
|
||||
|
||||
.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
|
||||
color: #c82829;
|
||||
}
|
||||
|
||||
.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
|
||||
color: #f5871f;
|
||||
}
|
||||
|
||||
.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
|
||||
color: #eab700;
|
||||
}
|
||||
|
||||
.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
|
||||
color: #718c00;
|
||||
}
|
||||
|
||||
.tomorrow-aqua, pre .css .hexcolor {
|
||||
color: #3e999f;
|
||||
}
|
||||
|
||||
.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
|
||||
color: #4271ae;
|
||||
}
|
||||
|
||||
.tomorrow-purple, pre .keyword, pre .javascript .function {
|
||||
color: #8959a8;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
background: white;
|
||||
color: #4d4d4c;
|
||||
padding: 0.5em;
|
||||
}
|
||||
85
js/highlight/styles/vs.css
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
|
||||
Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>
|
||||
|
||||
*/
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .annotation,
|
||||
pre .template_comment,
|
||||
pre .diff .header,
|
||||
pre .chunk,
|
||||
pre .apache .cbracket {
|
||||
color: rgb(0, 128, 0);
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .id,
|
||||
pre .built_in,
|
||||
pre .smalltalk .class,
|
||||
pre .winutils,
|
||||
pre .bash .variable,
|
||||
pre .tex .command,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .nginx .title,
|
||||
pre .xml .tag {
|
||||
color: rgb(0, 0, 255);
|
||||
}
|
||||
|
||||
pre .string,
|
||||
pre .title,
|
||||
pre .parent,
|
||||
pre .tag .value,
|
||||
pre .rules .value,
|
||||
pre .rules .value .number,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .aggregate,
|
||||
pre .template_tag,
|
||||
pre .django .variable,
|
||||
pre .addition,
|
||||
pre .flow,
|
||||
pre .stream,
|
||||
pre .apache .tag,
|
||||
pre .date,
|
||||
pre .tex .formula {
|
||||
color: rgb(163, 21, 21);
|
||||
}
|
||||
|
||||
pre .ruby .string,
|
||||
pre .decorator,
|
||||
pre .filter .argument,
|
||||
pre .localvars,
|
||||
pre .array,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .pi,
|
||||
pre .doctype,
|
||||
pre .deletion,
|
||||
pre .envvar,
|
||||
pre .shebang,
|
||||
pre .preprocessor,
|
||||
pre .userType,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .special,
|
||||
pre .input_number {
|
||||
color: rgb(43, 145, 175);
|
||||
}
|
||||
|
||||
pre .phpdoc,
|
||||
pre .javadoc,
|
||||
pre .xmlDocTag {
|
||||
color: rgb(128, 128, 128);
|
||||
}
|
||||
|
||||
pre .vhdl .typename { font-weight: bold; }
|
||||
pre .vhdl .string { color: #666666; }
|
||||
pre .vhdl .literal { color: rgb(163, 21, 21); }
|
||||
pre .vhdl .attribute { color: #00B0E8; }
|
||||
|
||||
pre .xml .attribute { color: rgb(255, 0, 0); }
|
||||
154
js/highlight/styles/xcode.css
Normal file
@@ -0,0 +1,154 @@
|
||||
/*
|
||||
|
||||
XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #fff; color: black;
|
||||
}
|
||||
|
||||
pre .comment,
|
||||
pre .template_comment,
|
||||
pre .javadoc,
|
||||
pre .comment * {
|
||||
color: rgb(0,106,0);
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .literal,
|
||||
pre .nginx .title {
|
||||
color: rgb(170,13,145);
|
||||
}
|
||||
pre .method,
|
||||
pre .list .title,
|
||||
pre .tag .title,
|
||||
pre .setting .value,
|
||||
pre .winutils,
|
||||
pre .tex .command,
|
||||
pre .http .title,
|
||||
pre .request,
|
||||
pre .status {
|
||||
color: #008;
|
||||
}
|
||||
|
||||
pre .envvar,
|
||||
pre .tex .special {
|
||||
color: #660;
|
||||
}
|
||||
|
||||
pre .string {
|
||||
color: rgb(196,26,22);
|
||||
}
|
||||
pre .tag .value,
|
||||
pre .cdata,
|
||||
pre .filter .argument,
|
||||
pre .attr_selector,
|
||||
pre .apache .cbracket,
|
||||
pre .date,
|
||||
pre .regexp {
|
||||
color: #080;
|
||||
}
|
||||
|
||||
pre .sub .identifier,
|
||||
pre .pi,
|
||||
pre .tag,
|
||||
pre .tag .keyword,
|
||||
pre .decorator,
|
||||
pre .ini .title,
|
||||
pre .shebang,
|
||||
pre .input_number,
|
||||
pre .hexcolor,
|
||||
pre .rules .value,
|
||||
pre .css .value .number,
|
||||
pre .symbol,
|
||||
pre .symbol .string,
|
||||
pre .number,
|
||||
pre .css .function,
|
||||
pre .clojure .title,
|
||||
pre .clojure .built_in {
|
||||
color: rgb(28,0,207);
|
||||
}
|
||||
|
||||
pre .class .title,
|
||||
pre .haskell .type,
|
||||
pre .smalltalk .class,
|
||||
pre .javadoctag,
|
||||
pre .yardoctag,
|
||||
pre .phpdoc,
|
||||
pre .typename,
|
||||
pre .tag .attribute,
|
||||
pre .doctype,
|
||||
pre .class .id,
|
||||
pre .built_in,
|
||||
pre .setting,
|
||||
pre .params,
|
||||
pre .clojure .attribute {
|
||||
color: rgb(92,38,153);
|
||||
}
|
||||
|
||||
pre .variable {
|
||||
color: rgb(63,110,116);
|
||||
}
|
||||
pre .css .tag,
|
||||
pre .rules .property,
|
||||
pre .pseudo,
|
||||
pre .subst {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
pre .css .class, pre .css .id {
|
||||
color: #9B703F;
|
||||
}
|
||||
|
||||
pre .value .important {
|
||||
color: #ff7700;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .rules .keyword {
|
||||
color: #C5AF75;
|
||||
}
|
||||
|
||||
pre .annotation,
|
||||
pre .apache .sqbracket,
|
||||
pre .nginx .built_in {
|
||||
color: #9B859D;
|
||||
}
|
||||
|
||||
pre .preprocessor,
|
||||
pre .preprocessor * {
|
||||
color: rgb(100,56,32);
|
||||
}
|
||||
|
||||
pre .tex .formula {
|
||||
background-color: #EEE;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
pre .diff .header,
|
||||
pre .chunk {
|
||||
color: #808080;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .diff .change {
|
||||
background-color: #BCCFF9;
|
||||
}
|
||||
|
||||
pre .addition {
|
||||
background-color: #BAEEBA;
|
||||
}
|
||||
|
||||
pre .deletion {
|
||||
background-color: #FFC8BD;
|
||||
}
|
||||
|
||||
pre .comment .yardoctag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre .method .id {
|
||||
color: #000;
|
||||
}
|
||||
113
js/highlight/styles/zenburn.css
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
|
||||
Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>
|
||||
based on dark.css by Ivan Sagalaev
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
background: #3F3F3F;
|
||||
color: #DCDCDC;
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .tag,
|
||||
pre .css .class,
|
||||
pre .css .id,
|
||||
pre .lisp .title,
|
||||
pre .nginx .title,
|
||||
pre .request,
|
||||
pre .status,
|
||||
pre .clojure .attribute {
|
||||
color: #E3CEAB;
|
||||
}
|
||||
|
||||
pre .django .template_tag,
|
||||
pre .django .variable,
|
||||
pre .django .filter .argument {
|
||||
color: #DCDCDC;
|
||||
}
|
||||
|
||||
pre .number,
|
||||
pre .date {
|
||||
color: #8CD0D3;
|
||||
}
|
||||
|
||||
pre .dos .envvar,
|
||||
pre .dos .stream,
|
||||
pre .variable,
|
||||
pre .apache .sqbracket {
|
||||
color: #EFDCBC;
|
||||
}
|
||||
|
||||
pre .dos .flow,
|
||||
pre .diff .change,
|
||||
pre .python .exception,
|
||||
pre .python .built_in,
|
||||
pre .literal,
|
||||
pre .tex .special {
|
||||
color: #EFEFAF;
|
||||
}
|
||||
|
||||
pre .diff .chunk,
|
||||
pre .ruby .subst {
|
||||
color: #8F8F8F;
|
||||
}
|
||||
|
||||
pre .dos .keyword,
|
||||
pre .python .decorator,
|
||||
pre .title,
|
||||
pre .haskell .type,
|
||||
pre .diff .header,
|
||||
pre .ruby .class .parent,
|
||||
pre .apache .tag,
|
||||
pre .nginx .built_in,
|
||||
pre .tex .command,
|
||||
pre .input_number {
|
||||
color: #efef8f;
|
||||
}
|
||||
|
||||
pre .dos .winutils,
|
||||
pre .ruby .symbol,
|
||||
pre .ruby .symbol .string,
|
||||
pre .ruby .string {
|
||||
color: #DCA3A3;
|
||||
}
|
||||
|
||||
pre .diff .deletion,
|
||||
pre .string,
|
||||
pre .tag .value,
|
||||
pre .preprocessor,
|
||||
pre .built_in,
|
||||
pre .sql .aggregate,
|
||||
pre .javadoc,
|
||||
pre .smalltalk .class,
|
||||
pre .smalltalk .localvars,
|
||||
pre .smalltalk .array,
|
||||
pre .css .rules .value,
|
||||
pre .attr_selector,
|
||||
pre .pseudo,
|
||||
pre .apache .cbracket,
|
||||
pre .tex .formula {
|
||||
color: #CC9393;
|
||||
}
|
||||
|
||||
pre .shebang,
|
||||
pre .diff .addition,
|
||||
pre .comment,
|
||||
pre .java .annotation,
|
||||
pre .template_comment,
|
||||
pre .pi,
|
||||
pre .doctype {
|
||||
color: #7F9F7F;
|
||||
}
|
||||
|
||||
pre .coffeescript .javascript,
|
||||
pre .xml .css,
|
||||
pre .xml .javascript,
|
||||
pre .xml .vbscript,
|
||||
pre .tex .formula {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
6
js/jquery-1.10.2.min.js
vendored
Normal file
1
js/jquery-1.10.2.min.map
Normal file
71
js/jquery.csv.js
Normal file
@@ -0,0 +1,71 @@
|
||||
|
||||
$.extend({
|
||||
parseCSV: function(csv, opt) {
|
||||
if (opt === undefined) opt = {};
|
||||
if (opt.sepChar === undefined) opt.sepChar = "auto";
|
||||
if (opt.header === undefined) opt.header = true;
|
||||
if (opt.trim === undefined) opt.trim = true;
|
||||
if (opt.map === undefined) opt.map = true;
|
||||
if (opt.numberize === undefined) opt.numberize = true;
|
||||
|
||||
var i,j,res = { rows: [] };
|
||||
var rows = csv.split("\n");
|
||||
if (opt.sepChar == "auto") {
|
||||
var mc=0;
|
||||
$.each([',','\t',';'], function(i,c) {
|
||||
var k;
|
||||
k = rows[0].split(c).length;
|
||||
if (k > mc) {
|
||||
opt.sepChar = c;
|
||||
mc = k;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (opt.header) res.header = rows[0].split(opt.sepChar);
|
||||
|
||||
rows = rows.slice(1);
|
||||
$.each(rows, function(i, r) {
|
||||
res.rows.push(r.split(opt.sepChar));
|
||||
});
|
||||
// clear whitespaces
|
||||
if (opt.trim) {
|
||||
$.each(res.header, function(i) {
|
||||
res.header[i] = res.header[i].trim();
|
||||
});
|
||||
$.each(res.rows, function(i) {
|
||||
$.each(res.rows[i], function(j) {
|
||||
res.rows[i][j] = res.rows[i][j].trim();
|
||||
});
|
||||
});
|
||||
}
|
||||
// convert to numbers
|
||||
if (opt.numberize) {
|
||||
$.each(res.header, function(i) {
|
||||
var n = Number(res.header[i]);
|
||||
if (!isNaN(n) && n == res.header[i])
|
||||
res.header[i] = n;
|
||||
});
|
||||
$.each(res.rows, function(i) {
|
||||
$.each(res.rows[i], function(j) {
|
||||
var n = Number(res.rows[i][j]);
|
||||
if (res.rows[i][j] == "") return;
|
||||
if (!isNaN(n) && n == res.rows[i][j])
|
||||
res.rows[i][j] = n;
|
||||
});
|
||||
});
|
||||
}
|
||||
// store rows as dictionaries
|
||||
if (opt.map) {
|
||||
$.each(res.rows, function(i) {
|
||||
var altrow = {};
|
||||
$.each(res.rows[i], function(j) {
|
||||
altrow[res.header[j]] = res.rows[i][j];
|
||||
});
|
||||
res.rows[i] = altrow;
|
||||
});
|
||||
}
|
||||
return res;
|
||||
}
|
||||
});
|
||||
|
||||
3
js/jquery.qtip.min.js
vendored
Normal file
41
js/kartograph-chroma.min.js
vendored
Normal file
6256
js/kartograph.js
Normal file
3
js/kartograph.min.js
vendored
Normal file
28
js/prettify.js
Normal file
@@ -0,0 +1,28 @@
|
||||
var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||||
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
|
||||
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
|
||||
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
|
||||
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
|
||||
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
|
||||
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
|
||||
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
|
||||
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||||
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
|
||||
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
|
||||
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
|
||||
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
|
||||
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
|
||||
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
|
||||
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
|
||||
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
|
||||
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
|
||||
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
|
||||
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
|
||||
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
||||
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
|
||||
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
|
||||
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
|
||||
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
|
||||
11
js/raphael-2.1.0.min.js
vendored
Normal file
8
js/raphael.min.js
vendored
Normal file
636
map/world.svg
Normal file
|
After Width: | Height: | Size: 112 KiB |
0
source/.html
Normal file
34
source/__init__.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>__init__.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>__init__.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">kartograph</span> <span class="kn">import</span> <span class="n">Kartograph</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph</span> <span class="kn">import</span> <span class="n">verbose</span>
|
||||
<span class="kn">from</span> <span class="nn">map</span> <span class="kn">import</span> <span class="n">projections</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'Kartograph'</span><span class="p">,</span> <span class="s">'projections'</span><span class="p">,</span> <span class="s">'verbose'</span><span class="p">]</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
858
source/cartogram.html
Normal file
@@ -0,0 +1,858 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>cartogram.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>cartogram.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>computes a circle cartogram for a given svg map + data file</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Cartogram</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">svg_src</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">csv_src</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="n">regions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_regions_from_svg</span><span class="p">(</span><span class="n">svg_src</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_csv</span><span class="p">(</span><span class="n">csv_src</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">circles</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="nb">id</span> <span class="ow">in</span> <span class="n">regions</span><span class="p">:</span>
|
||||
<span class="n">cx</span><span class="p">,</span> <span class="n">cy</span> <span class="o">=</span> <span class="n">regions</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
|
||||
<span class="n">circles</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Circle</span><span class="p">(</span><span class="n">cx</span><span class="p">,</span> <span class="n">cy</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attr</span> <span class="o">=</span> <span class="n">attr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">circles</span> <span class="o">=</span> <span class="n">circles</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">compute_radii</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="p">(</span><span class="mi">700</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rescale</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">correct</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rescale</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">correct</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rescale</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">correct</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">to_svg</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">load_regions_from_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">attr</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">svg</span> <span class="kn">as</span> <span class="nn">svgdoc</span>
|
||||
<span class="n">svg</span> <span class="o">=</span> <span class="n">svgdoc</span><span class="o">.</span><span class="n">Document</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">svg</span> <span class="o">=</span> <span class="n">svg</span>
|
||||
<span class="n">g</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">doc</span><span class="o">.</span><span class="n">getElementsByTagName</span><span class="p">(</span><span class="s">'g'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">coords</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">getElementsByTagName</span><span class="p">(</span><span class="s">'path'</span><span class="p">):</span>
|
||||
<span class="n">path_str</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">getAttribte</span><span class="p">(</span><span class="s">'d'</span><span class="p">)</span>
|
||||
<span class="nb">id</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">getAttribte</span><span class="p">(</span><span class="s">'data-'</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">restore_poly_from_path_str</span><span class="p">(</span><span class="n">path_str</span><span class="p">)</span>
|
||||
<span class="n">coords</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span> <span class="o">=</span> <span class="n">poly</span><span class="o">.</span><span class="n">center</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">coords</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">load_csv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s">'id'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'val'</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">csv</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">reader</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">url</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="s">'excel-tab'</span><span class="p">)</span>
|
||||
<span class="n">head</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">head</span><span class="p">:</span>
|
||||
<span class="n">head</span> <span class="o">=</span> <span class="n">row</span>
|
||||
<span class="k">print</span> <span class="n">head</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">id</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="n">head</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">key</span><span class="p">)]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="n">head</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">value</span><span class="p">)])</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span>
|
||||
<span class="k">return</span> <span class="n">data</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">compute_radii</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">math</span>
|
||||
<span class="n">minv</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">maxv</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">minv</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">minv</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">maxv</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">maxv</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">r</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">pow</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">value</span> <span class="o">-</span> <span class="n">minv</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">maxv</span> <span class="o">-</span> <span class="n">minv</span><span class="p">),</span> <span class="mf">0.50</span><span class="p">)</span> <span class="o">*</span> <span class="mi">60</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">weight</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="n">maxv</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">steps</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">correct</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">steps</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
<p>if i % 100 == 0:
|
||||
self.toSVG()</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">layout_step</span><span class="p">(</span><span class="n">correct</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">layout_step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">correct</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="n">pad</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">correct</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">C</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">ox</span> <span class="o">-</span> <span class="n">C</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">C</span><span class="o">.</span><span class="n">oy</span> <span class="o">-</span> <span class="n">C</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">v</span><span class="o">.</span><span class="n">normalize</span><span class="p">()</span>
|
||||
<span class="n">v</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
|
||||
<span class="n">C</span><span class="o">.</span><span class="n">_move</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">v</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">A</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">B</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">A</span> <span class="o">!=</span> <span class="n">B</span><span class="p">:</span>
|
||||
<span class="n">radsq</span> <span class="o">=</span> <span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">r</span> <span class="o">+</span> <span class="n">B</span><span class="o">.</span><span class="n">r</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">r</span> <span class="o">+</span> <span class="n">B</span><span class="o">.</span><span class="n">r</span><span class="p">)</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">sqdist</span><span class="p">(</span><span class="n">B</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">radsq</span> <span class="o">+</span> <span class="n">pad</span> <span class="o">></span> <span class="n">d</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
<p>move circles away from each other</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">v</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">(</span><span class="n">B</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">A</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">B</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">A</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">v</span><span class="o">.</span><span class="n">normalize</span><span class="p">()</span>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">radsq</span><span class="p">)</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">d</span><span class="p">))</span> <span class="o">*</span> <span class="mf">0.25</span>
|
||||
<span class="n">v</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
|
||||
<span class="n">A</span><span class="o">.</span><span class="n">_move</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="n">B</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="n">v</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="n">B</span><span class="o">.</span><span class="n">weight</span><span class="p">)</span>
|
||||
<span class="n">B</span><span class="o">.</span><span class="n">_move</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="n">A</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="n">v</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="n">A</span><span class="o">.</span><span class="n">weight</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">C</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">C</span><span class="o">.</span><span class="n">move</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">rescale</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="n">BBox</span><span class="p">,</span> <span class="n">View</span>
|
||||
<span class="n">svg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">svg</span>
|
||||
<span class="n">svg_view</span> <span class="o">=</span> <span class="n">svg</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">vh</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">svg_view</span><span class="p">[</span><span class="s">'h'</span><span class="p">])</span>
|
||||
<span class="n">vw</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">svg_view</span><span class="p">[</span><span class="s">'w'</span><span class="p">])</span>
|
||||
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">r</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="n">r</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">r</span><span class="p">))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="n">r</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">r</span><span class="p">))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">r</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">r</span><span class="p">))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">r</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">r</span><span class="p">))</span>
|
||||
|
||||
<span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">(</span><span class="n">bbox</span><span class="p">,</span> <span class="n">vw</span><span class="p">,</span> <span class="n">vh</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">r</span> <span class="o">*=</span> <span class="n">view</span><span class="o">.</span><span class="n">scale</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">project</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">correct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">A</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">intersects</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">for</span> <span class="n">B</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">A</span> <span class="o">!=</span> <span class="n">B</span><span class="p">:</span>
|
||||
<span class="n">radsq</span> <span class="o">=</span> <span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">r</span> <span class="o">+</span> <span class="n">B</span><span class="o">.</span><span class="n">r</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">r</span> <span class="o">+</span> <span class="n">B</span><span class="o">.</span><span class="n">r</span><span class="p">)</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">sqdist_o</span><span class="p">(</span><span class="n">B</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">radsq</span> <span class="o">></span> <span class="n">d</span><span class="p">:</span>
|
||||
<span class="n">intersects</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">intersects</span><span class="p">:</span>
|
||||
<span class="n">A</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">ox</span>
|
||||
<span class="n">A</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">oy</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">svg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">svg</span>
|
||||
|
||||
<span class="n">g</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s">'g'</span><span class="p">,</span> <span class="n">svg</span><span class="o">.</span><span class="n">root</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="s">"cartogram"</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="s">"red"</span><span class="p">,</span> <span class="n">fill_opacity</span><span class="o">=</span><span class="s">"0.5"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">circle</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">circles</span><span class="p">:</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s">'circle'</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">cx</span><span class="o">=</span><span class="n">circle</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">cy</span><span class="o">=</span><span class="n">circle</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="n">circle</span><span class="o">.</span><span class="n">r</span><span class="p">)</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="s">'data-'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="p">,</span> <span class="n">circle</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
|
||||
<span class="n">c</span><span class="o">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="s">'data-'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">circle</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">g</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
||||
|
||||
<span class="n">svg</span><span class="o">.</span><span class="n">preview</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
<p>svg.save('cartogram.svg')</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Circle</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ox</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">oy</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="nb">id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">_move</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">+=</span> <span class="n">x</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">+=</span> <span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">move</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'<Circle x=</span><span class="si">%.1f</span><span class="s">, y=</span><span class="si">%.1f</span><span class="s">, id=</span><span class="si">%s</span><span class="s">, val=</span><span class="si">%f</span><span class="s"> >'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">sqdist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">circ</span><span class="p">):</span>
|
||||
<span class="n">dx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">circ</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">circ</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">return</span> <span class="n">dx</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">*</span> <span class="n">dy</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-21'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-21'>#</a>
|
||||
</div>
|
||||
<p>been too lazy to code this myself, instead I took code from here
|
||||
http://www.kokkugia.com/wiki/index.php5?title=Python_vector_class</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">sqdist_o</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">circ</span><span class="p">):</span>
|
||||
<span class="n">dx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ox</span> <span class="o">-</span> <span class="n">circ</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">oy</span> <span class="o">-</span> <span class="n">circ</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">return</span> <span class="n">dx</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">*</span> <span class="n">dy</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-22'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-22'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-23'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-23'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Vector</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-24'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-24'>#</a>
|
||||
</div>
|
||||
<p>Class properties</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">y</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-25'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-25'>#</a>
|
||||
</div>
|
||||
<p>represent as a string</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'Vector(</span><span class="si">%s</span><span class="s">, </span><span class="si">%s</span><span class="s">)'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="sd">'''</span>
|
||||
<span class="sd"> Class Methods / Behaviours</span>
|
||||
<span class="sd"> '''</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-26'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-26'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">zero</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-27'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-27'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">clone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">Vector</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-28'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-28'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sqrt</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
<span class="n">norm</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="mf">1.0</span> <span class="o">/</span> <span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*=</span> <span class="n">norm</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*=</span> <span class="n">norm</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-29'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-29'>#</a>
|
||||
</div>
|
||||
<p>self.z *= norm</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-30'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-30'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">invert</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-31'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-31'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">resize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sizeFactor</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">normalize</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">sizeFactor</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-32'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-32'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">minus</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-=</span> <span class="n">t</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">-=</span> <span class="n">t</span><span class="o">.</span><span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-33'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-33'>#</a>
|
||||
</div>
|
||||
<p>self.z -= t.z</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-34'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-34'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">plus</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">+=</span> <span class="n">t</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">+=</span> <span class="n">t</span><span class="o">.</span><span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-35'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-35'>#</a>
|
||||
</div>
|
||||
<p>self.z += t.z</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-36'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-36'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">roundToInt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-37'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-37'>#</a>
|
||||
</div>
|
||||
<p>Returns the squared length of this vector.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">lengthSquared</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">float</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-38'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-38'>#</a>
|
||||
</div>
|
||||
<p>Returns the length of this vector.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sqrt</span>
|
||||
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-39'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-39'>#</a>
|
||||
</div>
|
||||
<p>Computes the dot product of this vector and vector v2</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">dot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">v2</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="n">v2</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*</span> <span class="n">v2</span><span class="o">.</span><span class="n">y</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-40'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-40'>#</a>
|
||||
</div>
|
||||
<p>Linearly interpolates between vectors v1 and v2 and returns the result point = (1-alpha)<em>v1 + alpha</em>v2.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">interpolate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">v2</span><span class="p">,</span> <span class="n">alpha</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">((</span><span class="mi">1</span> <span class="o">-</span> <span class="n">alpha</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="n">alpha</span> <span class="o">*</span> <span class="n">v2</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">((</span><span class="mi">1</span> <span class="o">-</span> <span class="n">alpha</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">alpha</span> <span class="o">*</span> <span class="n">v2</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">Vector</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-41'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-41'>#</a>
|
||||
</div>
|
||||
<p>Returns the angle in radians between this vector and the vector parameter;
|
||||
the return value is constrained to the range [0,PI].</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">angle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">v2</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">acos</span>
|
||||
<span class="n">vDot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">v2</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">length</span><span class="p">()</span> <span class="o">*</span> <span class="n">v2</span><span class="o">.</span><span class="n">length</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="n">vDot</span> <span class="o"><</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">:</span>
|
||||
<span class="n">vDot</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
|
||||
<span class="k">if</span> <span class="n">vDot</span> <span class="o">></span> <span class="mf">1.0</span><span class="p">:</span>
|
||||
<span class="n">vDot</span> <span class="o">=</span> <span class="mf">1.0</span>
|
||||
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">acos</span><span class="p">(</span><span class="n">vDot</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-42'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-42'>#</a>
|
||||
</div>
|
||||
<p>Limits this vector to a given size.
|
||||
NODEBOX USERS: name should change as 'size' and 'scale' are reserved words in Nodebox!</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">limit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">length</span><span class="p">()</span> <span class="o">></span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">normalize</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">size</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-43'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-43'>#</a>
|
||||
</div>
|
||||
<p>Point Methods
|
||||
Returns the square of the distance between this tuple and tuple t1.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">distanceSquared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t1</span><span class="p">):</span>
|
||||
<span class="n">dx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">t1</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">t1</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">dx</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">*</span> <span class="n">dy</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-44'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-44'>#</a>
|
||||
</div>
|
||||
<p>NODEBOX USERS: name should change as 'scale' is reserved word in Nodebox!</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">*=</span> <span class="n">s</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">*=</span> <span class="n">s</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-45'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-45'>#</a>
|
||||
</div>
|
||||
<p>NODEBOX USERS: name should change as 'translate' is reserved word in Nodebox!</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vec</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">plus</span><span class="p">(</span><span class="n">vec</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-46'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-46'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">distance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pt</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sqrt</span>
|
||||
<span class="n">dx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="n">pt</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">pt</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="n">dx</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">*</span> <span class="n">dy</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-47'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-47'>#</a>
|
||||
</div>
|
||||
<p>restores a list of polygons from a SVG path string</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">restore_poly_from_path_str</span><span class="p">(</span><span class="n">path_str</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-48'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-48'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">contours</span> <span class="o">=</span> <span class="n">path_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'Z'</span><span class="p">)</span> <span class="c"># last contour may be empty</span>
|
||||
<span class="kn">from</span> <span class="nn">Polygon</span> <span class="kn">import</span> <span class="n">Polygon</span> <span class="k">as</span> <span class="n">Poly</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">Poly</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">c_str</span> <span class="ow">in</span> <span class="n">contours</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">c_str</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s">""</span><span class="p">:</span>
|
||||
<span class="n">pts_str</span> <span class="o">=</span> <span class="n">c_str</span><span class="o">.</span><span class="n">strip</span><span class="p">()[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">"L"</span><span class="p">)</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt_str</span> <span class="ow">in</span> <span class="n">pts_str</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="n">pt_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">','</span><span class="p">))</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">))</span>
|
||||
<span class="n">poly</span><span class="o">.</span><span class="n">addContour</span><span class="p">(</span><span class="n">pts</span><span class="p">,</span> <span class="n">is_clockwise</span><span class="p">(</span><span class="n">pts</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-49'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-49'>#</a>
|
||||
</div>
|
||||
<p>returns true if a given polygon is in clockwise order</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">is_clockwise</span><span class="p">(</span><span class="n">pts</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-50'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-50'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">s</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'x'</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="n">x2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">x1</span><span class="p">,</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">x2</span><span class="p">,</span> <span class="n">y2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="p">(</span><span class="n">x2</span> <span class="o">-</span> <span class="n">x1</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">y2</span> <span class="o">+</span> <span class="n">y1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span> <span class="o">>=</span> <span class="mi">0</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
214
source/cli.html
Normal file
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>cli.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>cli.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>command line interface for kartograph</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">import</span> <span class="nn">argparse</span>
|
||||
<span class="kn">import</span> <span class="nn">os.path</span>
|
||||
<span class="kn">import</span> <span class="nn">json</span>
|
||||
<span class="kn">from</span> <span class="nn">errors</span> <span class="kn">import</span> <span class="n">KartographError</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">bcolors</span><span class="p">:</span>
|
||||
<span class="n">HEADER</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[95m'</span>
|
||||
<span class="n">OKBLUE</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[94m'</span>
|
||||
<span class="n">OKGREEN</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[92m'</span>
|
||||
<span class="n">WARNING</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[93m'</span>
|
||||
<span class="n">FAIL</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[91m'</span>
|
||||
<span class="n">ENDC</span> <span class="o">=</span> <span class="s">'</span><span class="se">\033</span><span class="s">[0m'</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">disable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">HEADER</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">OKBLUE</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">OKGREEN</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">WARNING</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">FAIL</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ENDC</span> <span class="o">=</span> <span class="s">''</span>
|
||||
|
||||
<span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">prog</span><span class="o">=</span><span class="s">'kartograph'</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s">'generating svg maps from shapefiles'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
<p>subparsers = parser.add_subparsers(help='sub-command help')</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
<p>parser_svg = subparsers.add_parser('svg', help='generates svg map')</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'config'</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">argparse</span><span class="o">.</span><span class="n">FileType</span><span class="p">(</span><span class="s">'r'</span><span class="p">),</span> <span class="n">help</span><span class="o">=</span><span class="s">'the configuration for the map. accepts json and yaml.'</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'--output'</span><span class="p">,</span> <span class="s">'-o'</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s">'FILE'</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">argparse</span><span class="o">.</span><span class="n">FileType</span><span class="p">(</span><span class="s">'w'</span><span class="p">),</span> <span class="n">help</span><span class="o">=</span><span class="s">'the file in which the map will be stored'</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'--verbose'</span><span class="p">,</span> <span class="s">'-v'</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s">'?'</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="n">const</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">'verbose mode'</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'--format'</span><span class="p">,</span> <span class="s">'-f'</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s">'svg|kml'</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">'output format, if not specified it will be guessed from output filename or default to svg'</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">'--preview'</span><span class="p">,</span> <span class="s">'-p'</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s">'?'</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="n">const</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">'opens the generated svg for preview'</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">kartograph</span> <span class="kn">import</span> <span class="n">Kartograph</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_config</span><span class="p">(</span><span class="n">f</span><span class="p">):</span>
|
||||
<span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">[</span><span class="o">-</span><span class="mi">5</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">'.json'</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">cfg</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'parsing of json map configuration failed.</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="n">e</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cfg</span>
|
||||
<span class="k">elif</span> <span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">[</span><span class="o">-</span><span class="mi">5</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">'.yaml'</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">yaml</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">cfg</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'parsing of yaml map configuration failed.</span><span class="se">\n</span><span class="s">'</span> <span class="o">+</span> <span class="n">e</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cfg</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'supported config formats are .json and .yaml'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">render_map</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">cfg</span> <span class="o">=</span> <span class="n">parse_config</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">config</span><span class="p">)</span>
|
||||
<span class="n">K</span> <span class="o">=</span> <span class="n">Kartograph</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">format</span><span class="p">:</span>
|
||||
<span class="n">format</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">format</span>
|
||||
<span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">output</span><span class="p">:</span>
|
||||
<span class="n">format</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">output</span><span class="o">.</span><span class="n">name</span><span class="p">)[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">format</span> <span class="o">=</span> <span class="s">'svg'</span>
|
||||
<span class="k">try</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>generate the map</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">K</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">cfg</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">output</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">verbose</span><span class="p">,</span> <span class="n">preview</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">preview</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">format</span><span class="p">)</span>
|
||||
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">traceback</span>
|
||||
<span class="n">ignore_path_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span> <span class="o">-</span> <span class="mi">7</span>
|
||||
<span class="n">exc</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">code</span><span class="p">)</span> <span class="ow">in</span> <span class="n">traceback</span><span class="o">.</span><span class="n">extract_tb</span><span class="p">(</span><span class="n">exc</span><span class="p">[</span><span class="mi">2</span><span class="p">]):</span>
|
||||
<span class="k">if</span> <span class="n">filename</span><span class="p">[:</span><span class="nb">len</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span> <span class="o">-</span> <span class="mi">7</span><span class="p">]</span> <span class="o">==</span> <span class="n">__file__</span><span class="p">[:</span><span class="o">-</span><span class="mi">7</span><span class="p">]:</span>
|
||||
<span class="k">print</span> <span class="s">' </span><span class="se">\033</span><span class="s">[1;33;40m</span><span class="si">%s</span><span class="se">\033</span><span class="s">[0m, </span><span class="se">\033</span><span class="s">[0;37;40min</span><span class="se">\033</span><span class="s">[0m </span><span class="si">%s</span><span class="s">()</span><span class="se">\n</span><span class="s"> </span><span class="se">\033</span><span class="s">[1;31;40m</span><span class="si">%d</span><span class="s">:</span><span class="se">\033</span><span class="s">[0m </span><span class="se">\033</span><span class="s">[0;37;40m</span><span class="si">%s</span><span class="se">\033</span><span class="s">[0m'</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">[</span><span class="n">ignore_path_len</span><span class="p">:],</span> <span class="n">func</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">code</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">' </span><span class="si">%s</span><span class="s">, in </span><span class="si">%s</span><span class="s">()</span><span class="se">\n</span><span class="s"> </span><span class="si">%d</span><span class="s">: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">code</span><span class="p">)</span>
|
||||
<span class="k">print</span>
|
||||
<span class="k">print</span> <span class="n">e</span>
|
||||
<span class="nb">exit</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">render_map</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||||
<span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">IOError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">print_help</span><span class="p">()</span>
|
||||
<span class="k">print</span> <span class="s">'</span><span class="se">\n</span><span class="s">IOError:'</span><span class="p">,</span> <span class="n">e</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">print_help</span><span class="p">()</span>
|
||||
<span class="k">print</span> <span class="s">'</span><span class="se">\n</span><span class="s">Error:'</span><span class="p">,</span> <span class="n">e</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">args</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
|
||||
<span class="n">elapsed</span> <span class="o">=</span> <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
|
||||
<span class="k">print</span> <span class="s">'execution time: </span><span class="si">%.3f</span><span class="s"> secs'</span> <span class="o">%</span> <span class="n">elapsed</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
|
||||
<span class="n">main</span><span class="p">()</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
94
source/errors.html
Normal file
@@ -0,0 +1,94 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>errors.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>errors.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>error classes for kartograph</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>Base class for exceptions in this module.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">KartographError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'</span><span class="se">\033</span><span class="s">[0;31;40mKartograph-Error:</span><span class="se">\033</span><span class="s">[0m '</span> <span class="o">+</span> <span class="nb">super</span><span class="p">(</span><span class="n">KartographError</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__str__</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">KartographOptionParseError</span><span class="p">(</span><span class="n">KartographError</span><span class="p">):</span>
|
||||
<span class="k">pass</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">KartographShapefileAttributesError</span><span class="p">(</span><span class="n">KartographError</span><span class="p">):</span>
|
||||
<span class="k">pass</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">KartographLayerSourceError</span><span class="p">(</span><span class="n">KartographError</span><span class="p">):</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
114
source/filter.html
Normal file
@@ -0,0 +1,114 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>filter.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>filter.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>layer filter</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">import</span> <span class="nn">re</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">filter_record</span><span class="p">(</span><span class="n">filt</span><span class="p">,</span> <span class="n">record</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">filt</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'and'</span> <span class="ow">in</span> <span class="n">filt</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="k">for</span> <span class="n">sfilt</span> <span class="ow">in</span> <span class="n">filt</span><span class="p">[</span><span class="s">'and'</span><span class="p">]:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">res</span> <span class="ow">and</span> <span class="n">filter_record</span><span class="p">(</span><span class="n">sfilt</span><span class="p">,</span> <span class="n">record</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="s">'or'</span> <span class="ow">in</span> <span class="n">filt</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">for</span> <span class="n">sfilt</span> <span class="ow">in</span> <span class="n">filt</span><span class="p">[</span><span class="s">'or'</span><span class="p">]:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">res</span> <span class="ow">or</span> <span class="n">filter_record</span><span class="p">(</span><span class="n">sfilt</span><span class="p">,</span> <span class="n">record</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">filt</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">filter_single</span><span class="p">(</span><span class="n">filt</span><span class="p">,</span> <span class="n">record</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">filter_single</span><span class="p">(</span><span class="n">filt</span><span class="p">,</span> <span class="n">record</span><span class="p">):</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">comp</span><span class="p">,</span> <span class="n">val</span> <span class="o">=</span> <span class="n">filt</span>
|
||||
<span class="n">prop</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">comp</span> <span class="o">=</span> <span class="n">comp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">' '</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">'in'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">val</span>
|
||||
<span class="k">elif</span> <span class="s">'like'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s">'^'</span> <span class="o">+</span> <span class="n">_escape_regex</span><span class="p">(</span><span class="n">val</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'%'</span><span class="p">,</span> <span class="s">'.*'</span><span class="p">)</span> <span class="o">+</span> <span class="s">'$'</span><span class="p">,</span> <span class="n">prop</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
|
||||
<span class="k">elif</span> <span class="s">'matches'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">prop</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
|
||||
<span class="k">elif</span> <span class="s">'is'</span> <span class="ow">in</span> <span class="n">comp</span> <span class="ow">or</span> <span class="s">'='</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">prop</span> <span class="o">==</span> <span class="n">val</span>
|
||||
<span class="k">elif</span> <span class="s">'greater'</span> <span class="ow">in</span> <span class="n">comp</span> <span class="ow">or</span> <span class="p">(</span><span class="s">'>'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">prop</span> <span class="o">></span> <span class="n">val</span>
|
||||
<span class="k">elif</span> <span class="s">'less'</span> <span class="ow">in</span> <span class="n">comp</span> <span class="ow">or</span> <span class="s">'<'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">prop</span> <span class="o"><</span> <span class="n">val</span>
|
||||
<span class="k">if</span> <span class="s">'not'</span> <span class="ow">in</span> <span class="n">comp</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="ow">not</span> <span class="n">res</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">res</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">_escape_regex</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
|
||||
<span class="n">chars</span> <span class="o">=</span> <span class="p">(</span><span class="s">'.'</span><span class="p">,</span> <span class="s">'*'</span><span class="p">,</span> <span class="s">'?'</span><span class="p">,</span> <span class="s">'+'</span><span class="p">,</span> <span class="s">'('</span><span class="p">,</span> <span class="s">')'</span><span class="p">,</span> <span class="s">'['</span><span class="p">,</span> <span class="s">']'</span><span class="p">,</span> <span class="s">'-'</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">chars</span><span class="p">:</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="s">'</span><span class="se">\\</span><span class="s">'</span> <span class="o">+</span> <span class="n">c</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
50
source/geometry/__init__.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>__init__.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>__init__.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>geometry package</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'Feature'</span><span class="p">,</span> <span class="s">'Geometry'</span><span class="p">,</span> <span class="s">'SolidGeometry'</span><span class="p">,</span> <span class="s">'MultiPolygon'</span><span class="p">,</span> <span class="s">'BBox'</span><span class="p">,</span> <span class="s">'Point'</span><span class="p">,</span> <span class="s">'View'</span><span class="p">,</span> <span class="s">'Line'</span><span class="p">,</span> <span class="s">'PolyLine'</span><span class="p">,</span> <span class="s">'create_feature'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">feature</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="n">Geometry</span><span class="p">,</span> <span class="n">SolidGeometry</span>
|
||||
<span class="kn">from</span> <span class="nn">polygon</span> <span class="kn">import</span> <span class="n">MultiPolygon</span>
|
||||
<span class="kn">from</span> <span class="nn">point</span> <span class="kn">import</span> <span class="n">Point</span>
|
||||
<span class="kn">from</span> <span class="nn">bbox</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
<span class="kn">from</span> <span class="nn">view</span> <span class="kn">import</span> <span class="n">View</span>
|
||||
<span class="kn">from</span> <span class="nn">line</span> <span class="kn">import</span> <span class="n">Line</span><span class="p">,</span> <span class="n">PolyLine</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
195
source/geometry/bbox.html
Normal file
@@ -0,0 +1,195 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>bbox.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>bbox.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">point</span> <span class="kn">import</span> <span class="n">Point</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>2D bounding box</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">BBox</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">left</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="k">if</span> <span class="n">width</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="n">left</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">left</span> <span class="o">+</span> <span class="n">width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span>
|
||||
<span class="k">if</span> <span class="n">height</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="n">top</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bottom</span> <span class="o">=</span> <span class="n">height</span> <span class="o">+</span> <span class="n">top</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pt</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pt</span><span class="p">,</span> <span class="n">Point</span><span class="p">):</span>
|
||||
<span class="n">pt</span> <span class="o">=</span> <span class="n">Point</span><span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xmin</span><span class="p">,</span> <span class="n">pt</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ymin</span><span class="p">,</span> <span class="n">pt</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xmax</span><span class="p">,</span> <span class="n">pt</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ymax</span><span class="p">,</span> <span class="n">pt</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bottom</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
<p>returns true if two bounding boxes overlap</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">intersects</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bbox</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="n">bbox</span><span class="o">.</span><span class="n">left</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="ow">and</span> <span class="n">bbox</span><span class="o">.</span><span class="n">right</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="ow">and</span> <span class="n">bbox</span><span class="o">.</span><span class="n">top</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">bottom</span> <span class="ow">and</span> <span class="n">bbox</span><span class="o">.</span><span class="n">bottom</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">top</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
<p>check if a point is inside the bbox</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">check_point</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pt</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="ow">and</span> <span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="ow">and</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="ow">and</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'BBox(x=</span><span class="si">%.2f</span><span class="s">, y=</span><span class="si">%.2f</span><span class="s">, w=</span><span class="si">%.2f</span><span class="s">, h=</span><span class="si">%.2f</span><span class="s">)'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bbox</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">bbox</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">bbox</span><span class="o">.</span><span class="n">top</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">bbox</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">bbox</span><span class="o">.</span><span class="n">bottom</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">inflate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">inflate</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">inflate</span><span class="p">:</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">)</span>
|
||||
<span class="n">amount</span> <span class="o">+=</span> <span class="n">d</span> <span class="o">*</span> <span class="n">inflate</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">-=</span> <span class="n">amount</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">-=</span> <span class="n">amount</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">+=</span> <span class="n">amount</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">+=</span> <span class="n">amount</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bottom</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
279
source/geometry/geometry.html
Normal file
@@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>geometry.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>geometry.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>DEPRECATED</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
<p>base class for all geometry</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Geometry</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
<p>project geometry</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'project() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">bbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'bbox() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'project_view() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">round</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'to_svg() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">crop_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view_bounds</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'crop_to() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">substract_geom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geom</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'substract_geom() is not implemented yet'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">is_emtpy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">unify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'unify() is not implemented yet'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>returns a list of point lists</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'points() is not implemented yet'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geom</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'join() is not implemented yet'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
<p>base class for all solid geometry, e.g. polygons</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">SolidGeometry</span><span class="p">(</span><span class="n">Geometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
<p>calculates area for this geometry</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">area</span><span class="p">():</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'area() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
<p>calculates centroid for this geometry</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">centroid</span><span class="p">():</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'centroid() is not implemented'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">invalidate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
519
source/geometry/line.html
Normal file
@@ -0,0 +1,519 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>line.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>line.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">bbox</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="n">Geometry</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>polyline</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">PolyLine</span><span class="p">(</span><span class="n">Geometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contours</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="n">contours</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
<p>returns the bounding box of the line</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">bbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">pts</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">:</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">bbox</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>projects the line to a map projection</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">points</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">proj</span><span class="o">.</span><span class="n">_visible</span><span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PolyLine</span><span class="p">(</span><span class="n">contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>transforms the line to a new view</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">points</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
<span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PolyLine</span><span class="p">(</span><span class="n">contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
<p>constructs a svg representation of this line</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">svg</span><span class="p">,</span> <span class="nb">round</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">path_str</span> <span class="o">=</span> <span class="s">""</span>
|
||||
<span class="k">if</span> <span class="nb">round</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'</span><span class="si">%f</span><span class="s">,</span><span class="si">%f</span><span class="s">'</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'%.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">)</span> <span class="o">+</span> <span class="s">'f'</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="n">fmt</span> <span class="o">+</span> <span class="s">','</span> <span class="o">+</span> <span class="n">fmt</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">points</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">path_str</span> <span class="o">+=</span> <span class="s">"M "</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fmt</span> <span class="o">%</span> <span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
|
||||
<span class="n">path_str</span> <span class="o">+=</span> <span class="s">'L '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s">'path'</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="n">path_str</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">path</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">crop_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geom</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>skip</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">is_empty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">unify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.simplify</span> <span class="kn">import</span> <span class="n">unify_polygon</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">)):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">unify_polygon</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
<p>is called after the points of this geometry have been
|
||||
changed from outside this class</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">pass</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
<p>simple line (= list of points)</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Line</span><span class="p">(</span><span class="n">Geometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">points</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">pts</span> <span class="o">=</span> <span class="n">points</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
<p>returns the bounding box of the line</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">bbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-21'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-21'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">:</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">bbox</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-22'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-22'>#</a>
|
||||
</div>
|
||||
<p>projects the line to a map projection</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-23'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-23'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">:</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">Line</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-24'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-24'>#</a>
|
||||
</div>
|
||||
<p>transforms the line to a new view</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-25'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-25'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">:</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">Line</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-26'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-26'>#</a>
|
||||
</div>
|
||||
<p>constructs a svg representation of this line</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">svg</span><span class="p">,</span> <span class="nb">round</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-27'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-27'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">path_str</span> <span class="o">=</span> <span class="s">""</span>
|
||||
<span class="k">if</span> <span class="nb">round</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'</span><span class="si">%f</span><span class="s">,</span><span class="si">%f</span><span class="s">'</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'%.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">)</span> <span class="o">+</span> <span class="s">'f'</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="n">fmt</span> <span class="o">+</span> <span class="s">','</span> <span class="o">+</span> <span class="n">fmt</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">path_str</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span>
|
||||
<span class="n">path_str</span> <span class="o">=</span> <span class="s">"M"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">path_str</span> <span class="o">+=</span> <span class="s">"L"</span>
|
||||
<span class="n">path_str</span> <span class="o">+=</span> <span class="n">fmt</span> <span class="o">%</span> <span class="p">(</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s">'path'</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="n">path_str</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">path</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-28'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-28'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">crop_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geom</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-29'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-29'>#</a>
|
||||
</div>
|
||||
<p>skip</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">self</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-30'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-30'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">is_empty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-31'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-31'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">unify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.simplify</span> <span class="kn">import</span> <span class="n">unify_polygon</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">pts</span> <span class="o">=</span> <span class="n">unify_polygon</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-32'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-32'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">pts</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-33'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-33'>#</a>
|
||||
</div>
|
||||
<p>is called after the points of this geometry have been
|
||||
changed from outside this class</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-34'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-34'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">pass</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
141
source/geometry/point.html
Normal file
@@ -0,0 +1,141 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>point.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>point.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>base class for points, used by line and bbox</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Point</span><span class="p">():</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
<p>emulate python's container types</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span>
|
||||
<span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">2</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
|
||||
<span class="n">pt</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">pt</span><span class="p">[</span><span class="n">k</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="k">elif</span> <span class="n">k</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">IndexError</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__delitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">'deletion not supported'</span><span class="p">)</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
625
source/geometry/polygon.html
Normal file
@@ -0,0 +1,625 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>polygon.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>polygon.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">bbox</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
<span class="kn">import</span> <span class="nn">utils</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>DEPRECATED! we use shapely.geometry.MultiPolygon instead</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
<p>Complex polygons</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">MultiPolygon</span><span class="p">(</span><span class="n">SolidGeometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contours</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__areas</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">apply_contours</span><span class="p">(</span><span class="n">contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>constructs a Polygon from contours</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">fromPoly</span><span class="p">(</span><span class="n">poly</span><span class="p">):</span>
|
||||
<span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">poly</span><span class="p">)):</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="n">poly</span><span class="o">.</span><span class="n">contour</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">MultiPolygon</span><span class="p">(</span><span class="n">contours</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">apply_contours</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contours</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="n">contours</span>
|
||||
<span class="kn">from</span> <span class="nn">Polygon</span> <span class="kn">import</span> <span class="n">Polygon</span> <span class="k">as</span> <span class="n">GPCPoly</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">GPCPoly</span><span class="p">()</span>
|
||||
<span class="n">skip</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">pts_</span> <span class="ow">in</span> <span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">pts_</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s">'deleted'</span> <span class="ow">in</span> <span class="n">pt</span> <span class="ow">and</span> <span class="n">pt</span><span class="o">.</span><span class="n">deleted</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="n">skip</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">pts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
|
||||
<span class="n">ishole</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">is_clockwise</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">poly</span><span class="o">.</span><span class="n">addContour</span><span class="p">(</span><span class="n">pts</span><span class="p">,</span> <span class="n">ishole</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">poly</span> <span class="o">=</span> <span class="n">poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">area</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">area</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
<p>returns array of areas of all sub-polygons areas of holes are < 0</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">areas</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__areas</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__areas</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="p">)):</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">area</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">isHole</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
|
||||
<span class="n">t</span> <span class="o">*=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">a</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__areas</span> <span class="o">=</span> <span class="n">a</span>
|
||||
<span class="k">return</span> <span class="n">a</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
<p>returns the center of gravity for this polygon</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">centroid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">center</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>smart bounding box</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">bbox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bb</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">min_area</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">bb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">boundingBox</span><span class="p">())</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">areas</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">areas</span><span class="p">()</span>
|
||||
<span class="n">max_a</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">areas</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">isHole</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">areas</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">a</span> <span class="o"><</span> <span class="n">max_a</span> <span class="o">*</span> <span class="n">min_area</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">bb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="o">.</span><span class="n">boundingBox</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">bb</span><span class="p">:</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
|
||||
<span class="k">return</span> <span class="n">bbox</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
<p>returns a new multi-polygon whose contours are
|
||||
projected to a map projection</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">in_contours</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span>
|
||||
<span class="n">out_contours</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pts</span> <span class="ow">in</span> <span class="n">in_contours</span><span class="p">:</span>
|
||||
<span class="n">pcont</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pcont</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">out_contours</span> <span class="o">+=</span> <span class="n">pcont</span>
|
||||
<span class="k">return</span> <span class="n">MultiPolygon</span><span class="p">(</span><span class="n">out_contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
<p>returns a new multi-polygon whose contours are
|
||||
projected to a new view</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">contours</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">contour</span> <span class="ow">in</span> <span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">out_c</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">contour</span><span class="p">:</span>
|
||||
<span class="n">pt</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="n">out_c</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="n">out</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">out_c</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="n">out</span>
|
||||
<span class="n">out_poly</span> <span class="o">=</span> <span class="n">MultiPolygon</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">out_poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">crop_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view_bounds</span><span class="p">):</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span> <span class="o">&</span> <span class="n">view_bounds</span><span class="o">.</span><span class="n">poly</span>
|
||||
<span class="k">return</span> <span class="n">MultiPolygon</span><span class="o">.</span><span class="n">fromPoly</span><span class="p">(</span><span class="n">poly</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">substract_geom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geom</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s">'substraction is allowed for polygons only, yet'</span><span class="p">)</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span> <span class="o">-</span> <span class="n">geom</span><span class="o">.</span><span class="n">poly</span>
|
||||
<span class="k">return</span> <span class="n">MultiPolygon</span><span class="o">.</span><span class="n">fromPoly</span><span class="p">(</span><span class="n">poly</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
<p>constructs a svg representation of this polygon</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">svg</span><span class="p">,</span> <span class="nb">round</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-21'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-21'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">path_str</span> <span class="o">=</span> <span class="s">""</span>
|
||||
<span class="k">if</span> <span class="nb">round</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'</span><span class="si">%f</span><span class="s">,</span><span class="si">%f</span><span class="s">'</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="s">'%.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">)</span> <span class="o">+</span> <span class="s">'f'</span>
|
||||
<span class="n">fmt</span> <span class="o">=</span> <span class="n">fmt</span> <span class="o">+</span> <span class="s">','</span> <span class="o">+</span> <span class="n">fmt</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">pts</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
|
||||
<span class="n">cont_str</span> <span class="o">=</span> <span class="s">""</span>
|
||||
<span class="n">kept</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s">'deleted'</span> <span class="ow">in</span> <span class="n">pt</span> <span class="ow">and</span> <span class="n">pt</span><span class="o">.</span><span class="n">deleted</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">kept</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">kept</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">kept</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">cont_str</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span>
|
||||
<span class="n">cont_str</span> <span class="o">=</span> <span class="s">"M"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">cont_str</span> <span class="o">+=</span> <span class="s">"L"</span>
|
||||
<span class="n">cont_str</span> <span class="o">+=</span> <span class="n">fmt</span> <span class="o">%</span> <span class="n">pt</span>
|
||||
<span class="n">cont_str</span> <span class="o">+=</span> <span class="s">"Z "</span>
|
||||
<span class="n">path_str</span> <span class="o">+=</span> <span class="n">cont_str</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">path_str</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">svg</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s">'path'</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="n">path_str</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">path</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-22'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-22'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">is_empty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-23'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-23'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">unify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.simplify</span> <span class="kn">import</span> <span class="n">unify_polygons</span>
|
||||
<span class="n">contours</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span>
|
||||
<span class="n">contours</span> <span class="o">=</span> <span class="n">unify_polygons</span><span class="p">(</span><span class="n">contours</span><span class="p">,</span> <span class="n">point_store</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">apply_contours</span><span class="p">(</span><span class="n">contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-24'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-24'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-25'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-25'>#</a>
|
||||
</div>
|
||||
<p>is called after the points of this geometry are
|
||||
changed from outside this class</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-26'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-26'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">apply_contours</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-27'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-27'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_kml</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">round</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">pykml.factory</span> <span class="kn">import</span> <span class="n">KML_ElementMaker</span> <span class="k">as</span> <span class="n">KML</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">KML</span><span class="o">.</span><span class="n">Polygon</span><span class="p">(</span>
|
||||
<span class="n">KML</span><span class="o">.</span><span class="n">tesselate</span><span class="p">(</span><span class="s">"1"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">outer</span> <span class="o">=</span> <span class="n">KML</span><span class="o">.</span><span class="n">outerBoundaryIs</span><span class="p">()</span>
|
||||
<span class="n">inner</span> <span class="o">=</span> <span class="n">KML</span><span class="o">.</span><span class="n">innerBoundaryIs</span><span class="p">()</span>
|
||||
<span class="n">has_inner</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="p">)):</span>
|
||||
<span class="n">cnt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">poly</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">coords</span> <span class="o">=</span> <span class="s">''</span>
|
||||
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">cnt</span><span class="p">:</span>
|
||||
<span class="n">coords</span> <span class="o">+=</span> <span class="s">','</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="o">+</span> <span class="s">' '</span>
|
||||
<span class="n">ring</span> <span class="o">=</span> <span class="n">KML</span><span class="o">.</span><span class="n">LinearRing</span><span class="p">(</span>
|
||||
<span class="n">KML</span><span class="o">.</span><span class="n">coordinates</span><span class="p">(</span><span class="n">coords</span><span class="p">)</span>
|
||||
<span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-28'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-28'>#</a>
|
||||
</div>
|
||||
<p>hole = self.poly.isHole(i)
|
||||
if hole == False:</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">outer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ring</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-29'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-29'>#</a>
|
||||
</div>
|
||||
<p>else:
|
||||
inner.append(ring)
|
||||
has_inner = True</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">poly</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">outer</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">has_inner</span><span class="p">:</span>
|
||||
<span class="n">poly</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inner</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-30'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-30'>#</a>
|
||||
</div>
|
||||
<p>splits the geometry into several line segments</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">to_line_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-31'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-31'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-32'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-32'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">from_line_segments</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-33'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-33'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Polygon</span><span class="p">(</span><span class="n">SolidGeometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-34'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-34'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">points</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__centroid</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">points</span> <span class="o">=</span> <span class="n">points</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-35'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-35'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">area</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">points</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">a</span> <span class="o">+=</span> <span class="n">p0</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="n">p1</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="n">p1</span><span class="o">.</span><span class="n">x</span> <span class="o">*</span> <span class="n">p0</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__area</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="o">.</span><span class="mi">5</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__area</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-36'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-36'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proj</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">invalidate</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">points</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">points</span><span class="p">)</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
196
source/geometry/utils.html
Normal file
@@ -0,0 +1,196 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>utils.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>utils.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>geometry utils</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>returns true if a given linear ring is in clockwise order</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">is_clockwise</span><span class="p">(</span><span class="n">pts</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">s</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'x'</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="n">x2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">x</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">x1</span><span class="p">,</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">x2</span><span class="p">,</span> <span class="n">y2</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="p">(</span><span class="n">x2</span> <span class="o">-</span> <span class="n">x1</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">y2</span> <span class="o">+</span> <span class="n">y1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span> <span class="o">>=</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">bbox_to_polygon</span><span class="p">(</span><span class="n">bbox</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">shapely.geometry</span> <span class="kn">import</span> <span class="n">Polygon</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="n">bbox</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">Polygon</span><span class="p">([(</span><span class="n">s</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">bottom</span><span class="p">),</span> <span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">top</span><span class="p">),</span> <span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">top</span><span class="p">),</span> <span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">s</span><span class="o">.</span><span class="n">bottom</span><span class="p">)])</span>
|
||||
<span class="k">return</span> <span class="n">poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">geom_to_bbox</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.geometry</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
<span class="kn">from</span> <span class="nn">shapely.geometry</span> <span class="kn">import</span> <span class="n">MultiPolygon</span>
|
||||
<span class="k">if</span> <span class="bp">True</span> <span class="ow">or</span> <span class="n">min_area</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>if no minimum area ratio is set or the geometry
|
||||
is not a multipart geometry, we simply use the
|
||||
full bbox</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">minx</span><span class="p">,</span> <span class="n">miny</span><span class="p">,</span> <span class="n">maxx</span><span class="p">,</span> <span class="n">maxy</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">bounds</span>
|
||||
<span class="k">return</span> <span class="n">BBox</span><span class="p">(</span><span class="n">width</span><span class="o">=</span><span class="n">maxx</span> <span class="o">-</span> <span class="n">minx</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="n">maxy</span> <span class="o">-</span> <span class="n">miny</span><span class="p">,</span> <span class="n">left</span><span class="o">=</span><span class="n">minx</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="n">miny</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
<p>for multipart geometry we use only the bbox of
|
||||
the 'biggest' sub-geometries, depending on min_area</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="n">areas</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">bb</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">polygon</span> <span class="ow">in</span> <span class="n">geom</span><span class="o">.</span><span class="n">geoms</span><span class="p">:</span>
|
||||
<span class="n">areas</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">polygon</span><span class="o">.</span><span class="n">area</span><span class="p">)</span>
|
||||
<span class="n">max_a</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">areas</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">geom</span><span class="o">.</span><span class="n">geoms</span><span class="p">)):</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">areas</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">a</span> <span class="o"><</span> <span class="n">max_a</span> <span class="o">*</span> <span class="n">min_area</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>ignore this sub polygon since it is too small</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">continue</span>
|
||||
<span class="n">bb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">geom</span><span class="o">.</span><span class="n">geoms</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">bounds</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">bb</span><span class="p">:</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
|
||||
<span class="k">return</span> <span class="n">bbox</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
<p>joins polygonal features</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">join_features</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">props</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">from</span> <span class="nn">feature</span> <span class="kn">import</span> <span class="n">MultiPolygonFeature</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">features</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">features</span>
|
||||
|
||||
<span class="n">joined</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">polygons</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">feat</span> <span class="ow">in</span> <span class="n">features</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">feat</span><span class="p">,</span> <span class="n">MultiPolygonFeature</span><span class="p">):</span>
|
||||
<span class="n">polygons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">feat</span><span class="o">.</span><span class="n">geom</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">joined</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">feat</span><span class="p">)</span> <span class="c"># cannot join this</span>
|
||||
|
||||
<span class="n">polygons</span> <span class="o">=</span> <span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">,</span> <span class="n">polygons</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">polygons</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">polygons</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">poly2</span> <span class="ow">in</span> <span class="n">polygons</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">poly</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">poly2</span><span class="p">)</span>
|
||||
<span class="n">joined</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">MultiPolygonFeature</span><span class="p">(</span><span class="n">poly</span><span class="p">,</span> <span class="n">props</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">joined</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
226
source/geometry/view.html
Normal file
@@ -0,0 +1,226 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>view.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>view.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">shapely.geometry</span> <span class="kn">import</span> <span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">,</span> <span class="n">LineString</span><span class="p">,</span> <span class="n">MultiLineString</span><span class="p">,</span> <span class="n">MultiPoint</span><span class="p">,</span> <span class="n">Point</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.errors</span> <span class="kn">import</span> <span class="n">KartographError</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>translates a point to a view</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">View</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bbox</span> <span class="o">=</span> <span class="n">bbox</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">padding</span> <span class="o">=</span> <span class="n">padding</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span>
|
||||
<span class="k">if</span> <span class="n">bbox</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scale</span> <span class="o">=</span> <span class="nb">min</span><span class="p">((</span><span class="n">width</span> <span class="o">-</span> <span class="n">padding</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">bbox</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="p">(</span><span class="n">height</span> <span class="o">-</span> <span class="n">padding</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">bbox</span><span class="o">.</span><span class="n">height</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pt</span><span class="p">):</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bbox</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">bbox</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">pt</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scale</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span>
|
||||
<span class="n">w</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span>
|
||||
<span class="n">px</span> <span class="o">=</span> <span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">py</span> <span class="o">=</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">(</span><span class="n">px</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">left</span><span class="p">)</span> <span class="o">*</span> <span class="n">s</span> <span class="o">+</span> <span class="p">(</span><span class="n">w</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">width</span> <span class="o">*</span> <span class="n">s</span><span class="p">)</span> <span class="o">*</span> <span class="o">.</span><span class="mi">5</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">(</span><span class="n">py</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> <span class="o">*</span> <span class="n">s</span> <span class="o">+</span> <span class="p">(</span><span class="n">h</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">height</span> <span class="o">*</span> <span class="n">s</span><span class="p">)</span> <span class="o">*</span> <span class="o">.</span><span class="mi">5</span>
|
||||
<span class="k">return</span> <span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">))[</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">pt</span><span class="p">,</span> <span class="n">Point</span><span class="p">)]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_inverse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pt</span><span class="p">):</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bbox</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">bbox</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">pt</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scale</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span>
|
||||
<span class="n">w</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">pt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">pt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">px</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="p">(</span><span class="n">w</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">width</span> <span class="o">*</span> <span class="n">s</span><span class="p">)</span> <span class="o">*</span> <span class="o">.</span><span class="mi">5</span><span class="p">)</span> <span class="o">/</span> <span class="n">s</span> <span class="o">+</span> <span class="n">bbox</span><span class="o">.</span><span class="n">left</span>
|
||||
<span class="n">py</span> <span class="o">=</span> <span class="p">(</span><span class="n">y</span> <span class="o">-</span> <span class="p">(</span><span class="n">h</span> <span class="o">-</span> <span class="n">bbox</span><span class="o">.</span><span class="n">height</span> <span class="o">*</span> <span class="n">s</span><span class="p">)</span> <span class="o">*</span> <span class="o">.</span><span class="mi">5</span><span class="p">)</span> <span class="o">/</span> <span class="n">s</span> <span class="o">+</span> <span class="n">bbox</span><span class="o">.</span><span class="n">top</span>
|
||||
<span class="k">return</span> <span class="p">((</span><span class="n">px</span><span class="p">,</span> <span class="n">py</span><span class="p">),</span> <span class="n">Point</span><span class="p">(</span><span class="n">px</span><span class="p">,</span> <span class="n">py</span><span class="p">))[</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">pt</span><span class="p">,</span> <span class="n">Point</span><span class="p">)]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>converts the given geometry to the view coordinates</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_geometry</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">geometry</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">geometries</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">geometry</span><span class="p">,</span> <span class="s">'geoms'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">geometry</span><span class="o">.</span><span class="n">geoms</span> <span class="ow">or</span> <span class="p">[</span><span class="n">geometry</span><span class="p">]</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>at first shift polygons
|
||||
geometries = []
|
||||
for geom in unshifted_geometries:
|
||||
geometries += self._shift_polygon(geom)</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">for</span> <span class="n">geom</span> <span class="ow">in</span> <span class="n">geometries</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">Polygon</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">project_polygon</span><span class="p">(</span><span class="n">geom</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">LineString</span><span class="p">):</span>
|
||||
<span class="n">rings</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">project_linear_ring</span><span class="p">(</span><span class="n">geom</span><span class="o">.</span><span class="n">coords</span><span class="p">)</span>
|
||||
<span class="n">res</span> <span class="o">+=</span> <span class="nb">map</span><span class="p">(</span><span class="n">LineString</span><span class="p">,</span> <span class="n">rings</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">Point</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_visible</span><span class="p">(</span><span class="n">geom</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">geom</span><span class="o">.</span><span class="n">y</span><span class="p">):</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">geom</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'unknown geometry type </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">geometry</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">Polygon</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">MultiPolygon</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">LineString</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">MultiLineString</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">LineString</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">MultiPoint</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_polygon</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">polygon</span><span class="p">):</span>
|
||||
<span class="n">ext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">project_linear_ring</span><span class="p">(</span><span class="n">polygon</span><span class="o">.</span><span class="n">exterior</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">pts_int</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">interior</span> <span class="ow">in</span> <span class="n">polygon</span><span class="o">.</span><span class="n">interiors</span><span class="p">:</span>
|
||||
<span class="n">pts_int</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">project_linear_ring</span><span class="p">(</span><span class="n">interior</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">Polygon</span><span class="p">(</span><span class="n">ext</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pts_int</span><span class="p">)]</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">ext</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'unhandled case: exterior is split into multiple rings'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project_linear_ring</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ring</span><span class="p">):</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">ring</span><span class="o">.</span><span class="n">coords</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">points</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'View(w=</span><span class="si">%f</span><span class="s">, h=</span><span class="si">%f</span><span class="s">, pad=</span><span class="si">%f</span><span class="s">, scale=</span><span class="si">%f</span><span class="s">, bbox=</span><span class="si">%s</span><span class="s">)'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">padding</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scale</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bbox</span><span class="p">)</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
BIN
source/img/crop-bbox-01.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
source/img/crop-polygon-1.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
source/img/crop-polygon-minarea.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
source/img/crop-polygon.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
source/img/join.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
source/img/logo.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
source/img/simplify.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
326
source/kartograph.html
Normal file
@@ -0,0 +1,326 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>kartograph.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>kartograph.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">options</span> <span class="kn">import</span> <span class="n">parse_options</span>
|
||||
<span class="kn">from</span> <span class="nn">shapely.geometry</span> <span class="kn">import</span> <span class="n">Polygon</span><span class="p">,</span> <span class="n">LineString</span><span class="p">,</span> <span class="n">MultiPolygon</span>
|
||||
<span class="kn">from</span> <span class="nn">errors</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
|
||||
<span class="kn">from</span> <span class="nn">renderer</span> <span class="kn">import</span> <span class="n">SvgRenderer</span><span class="p">,</span> <span class="n">KmlRenderer</span>
|
||||
<span class="kn">from</span> <span class="nn">map</span> <span class="kn">import</span> <span class="n">Map</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<h2>Kartograph</h2>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">verbose</span> <span class="o">=</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
<p>These renderers are currently available. See <a href="renderer/svg.html">renderer/svg.py</a> and renderer/kml.py
|
||||
for more details on those.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">_known_renderer</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s">'svg'</span><span class="p">:</span> <span class="n">SvgRenderer</span><span class="p">,</span>
|
||||
<span class="s">'kml'</span><span class="p">:</span> <span class="n">KmlRenderer</span>
|
||||
<span class="p">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Kartograph</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layerCache</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">pass</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>Generates a the map and renders it using the specified output format.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">'svg'</span><span class="p">,</span> <span class="n">preview</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">preview</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">preview</span> <span class="o">=</span> <span class="n">outfile</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>Create a deep copy of the options dictionary so our changes will not be
|
||||
visible to the calling application.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">opts</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
<p>Parse the options dictionary. See options.py for more details.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">parse_options</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
<p>Create the map instance. It will do all the hard work for us, so you
|
||||
definitely should check out <a href="map.html">map.py</a> for all the fun stuff happending
|
||||
there..</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">_map</span> <span class="o">=</span> <span class="n">Map</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">layerCache</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">format</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
<p>Check if the format is handled by a renderer.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">format</span> <span class="o">=</span> <span class="n">format</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">format</span> <span class="ow">in</span> <span class="n">_known_renderer</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
<p>Create a renderer instance and render the map.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">renderer</span> <span class="o">=</span> <span class="n">_known_renderer</span><span class="p">[</span><span class="n">format</span><span class="p">](</span><span class="n">_map</span><span class="p">)</span>
|
||||
<span class="n">renderer</span><span class="o">.</span><span class="n">render</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>If requested, we try to preview the created map now, which means that
|
||||
we open the created SVG file in Firefox or open the KML in Google Earth.
|
||||
Of course, preview modes are highly dependent on the operating system, but
|
||||
we don't care about that now.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">preview</span><span class="p">:</span>
|
||||
<span class="n">renderer</span><span class="o">.</span><span class="n">preview</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
<p>Write the map to a file or return the renderer instance.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">outfile</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">renderer</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">renderer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">outfile</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'unknown format: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">format</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
<p>Here are some handy methods for debugging Kartograph. It will plot a given shapely
|
||||
geometry using matplotlib and descartes.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">_plot_geometry</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="s">'#ffcccc'</span><span class="p">,</span> <span class="n">stroke</span><span class="o">=</span><span class="s">'#333333'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib.figure</span> <span class="kn">import</span> <span class="n">SubplotParams</span>
|
||||
<span class="kn">from</span> <span class="nn">descartes</span> <span class="kn">import</span> <span class="n">PolygonPatch</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="p">(</span><span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">)):</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">geom</span><span class="o">.</span><span class="n">bounds</span>
|
||||
<span class="n">geoms</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="s">'geoms'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">geom</span><span class="o">.</span><span class="n">geoms</span> <span class="ow">or</span> <span class="p">[</span><span class="n">geom</span><span class="p">]</span>
|
||||
<span class="n">w</span><span class="p">,</span> <span class="n">h</span> <span class="o">=</span> <span class="p">(</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">ratio</span> <span class="o">=</span> <span class="n">w</span> <span class="o">/</span> <span class="n">h</span>
|
||||
<span class="n">pad</span> <span class="o">=</span> <span class="mf">0.15</span>
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">pyplot</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span> <span class="o">/</span> <span class="n">ratio</span><span class="p">),</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">110</span><span class="p">,</span> <span class="n">subplotpars</span><span class="o">=</span><span class="n">SubplotParams</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="n">pad</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="n">pad</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">pad</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">pad</span><span class="p">))</span>
|
||||
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s">'equal'</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">geom</span> <span class="ow">in</span> <span class="n">geoms</span><span class="p">:</span>
|
||||
<span class="n">patch1</span> <span class="o">=</span> <span class="n">PolygonPatch</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">fc</span><span class="o">=</span><span class="n">fill</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="n">stroke</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">alpha</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">patch1</span><span class="p">)</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="p">(</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">*</span> <span class="mf">0.03</span> <span class="c"># some padding</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">,</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">p</span><span class="p">,</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="n">p</span><span class="p">,</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">])</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">msg</span><span class="p">:</span>
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mf">0.04</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">_plot_lines</span><span class="p">(</span><span class="n">lines</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">plot_line</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">line</span><span class="p">):</span>
|
||||
<span class="n">filtered</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">pt</span><span class="o">.</span><span class="n">deleted</span><span class="p">:</span>
|
||||
<span class="n">filtered</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">filtered</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">ob</span> <span class="o">=</span> <span class="n">LineString</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">ob</span><span class="o">.</span><span class="n">xy</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s">'-'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'#333333'</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">solid_capstyle</span><span class="o">=</span><span class="s">'round'</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">pyplot</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">),</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">90</span><span class="p">,</span> <span class="n">subplotpars</span><span class="o">=</span><span class="n">SubplotParams</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="mf">0.065</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s">'equal'</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
||||
<span class="n">plot_line</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">line</span><span class="p">)</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">set_frame_on</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">fig</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">_debug_show_features</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">descartes</span> <span class="kn">import</span> <span class="n">PolygonPatch</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib.figure</span> <span class="kn">import</span> <span class="n">SubplotParams</span>
|
||||
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">pyplot</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">),</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">110</span><span class="p">,</span> <span class="n">subplotpars</span><span class="o">=</span><span class="n">SubplotParams</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="mf">0.065</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s">'equal'</span><span class="p">)</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="mi">100000</span><span class="p">,</span> <span class="mi">100000</span><span class="p">,</span> <span class="o">-</span><span class="mi">100000</span><span class="p">,</span> <span class="o">-</span><span class="mi">100000</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">feat</span> <span class="ow">in</span> <span class="n">features</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">feat</span><span class="o">.</span><span class="n">geom</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="n">feat</span><span class="o">.</span><span class="n">geom</span><span class="o">.</span><span class="n">bounds</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">min</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
|
||||
<span class="n">geoms</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">feat</span><span class="o">.</span><span class="n">geom</span><span class="p">,</span> <span class="s">'geoms'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">feat</span><span class="o">.</span><span class="n">geom</span><span class="o">.</span><span class="n">geoms</span> <span class="ow">or</span> <span class="p">[</span><span class="n">feat</span><span class="o">.</span><span class="n">geom</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">geom</span> <span class="ow">in</span> <span class="n">geoms</span><span class="p">:</span>
|
||||
<span class="n">patch1</span> <span class="o">=</span> <span class="n">PolygonPatch</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">fc</span><span class="o">=</span><span class="s">'#ddcccc'</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="s">'#000000'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">patch1</span><span class="p">)</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="p">(</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">*</span> <span class="mf">0.05</span> <span class="c"># some padding</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">,</span> <span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">p</span><span class="p">,</span> <span class="n">b</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">])</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">set_frame_on</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">message</span><span class="p">:</span>
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mf">0.04</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
|
||||
<span class="n">pyplot</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
68
source/layersource/__init__.html
Normal file
@@ -0,0 +1,68 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>__init__.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>__init__.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>as of version 2.0 kartograph supports multiple import formats</p>
|
||||
<ul>
|
||||
<li>Shapefile</li>
|
||||
<li>KML ? (only polygons and polylines)</li>
|
||||
<li>GeoJSON ?</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'LayerSource'</span><span class="p">,</span> <span class="s">'ShapefileLayer'</span><span class="p">,</span> <span class="s">'GraticuleLayer'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">shplayer</span> <span class="kn">import</span> <span class="n">ShapefileLayer</span>
|
||||
<span class="kn">from</span> <span class="nn">layersource</span> <span class="kn">import</span> <span class="n">LayerSource</span>
|
||||
<span class="kn">from</span> <span class="nn">special</span> <span class="kn">import</span> <span class="n">GraticuleLayer</span><span class="p">,</span> <span class="n">SeaLayer</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.errors</span> <span class="kn">import</span> <span class="o">*</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">handle_layer_source</span><span class="p">(</span><span class="n">layer</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="p">{}):</span>
|
||||
<span class="k">if</span> <span class="s">'src'</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">src</span> <span class="o">=</span> <span class="n">layer</span><span class="p">[</span><span class="s">'src'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">src</span> <span class="ow">in</span> <span class="n">cache</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cache</span><span class="p">[</span><span class="n">src</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">src</span><span class="p">[</span><span class="o">-</span><span class="mi">4</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">".shp"</span><span class="p">:</span> <span class="c"># shapefile layer</span>
|
||||
<span class="n">src</span> <span class="o">=</span> <span class="n">ShapefileLayer</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">LayerSource</span><span class="p">):</span>
|
||||
<span class="n">cache</span><span class="p">[</span><span class="n">layer</span><span class="p">[</span><span class="s">'src'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">src</span>
|
||||
<span class="k">return</span> <span class="n">src</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographLayerSourceError</span><span class="p">(</span><span class="s">'don</span><span class="se">\'</span><span class="s">t know how to handle "'</span> <span class="o">+</span> <span class="n">src</span> <span class="o">+</span> <span class="s">'"'</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="s">'special'</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'graticule'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">GraticuleLayer</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">layer</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'sea'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">SeaLayer</span><span class="p">()</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
55
source/layersource/layersource.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>layersource.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>layersource.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>base class for layer source data providers (e.g. shapefiles)</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">LayerSource</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">get_features</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="nb">filter</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
2669
source/layersource/shapefile.html
Normal file
410
source/layersource/shplayer.html
Normal file
@@ -0,0 +1,410 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>shplayer.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>shplayer.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">layersource</span> <span class="kn">import</span> <span class="n">LayerSource</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.errors</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.geometry</span> <span class="kn">import</span> <span class="n">BBox</span><span class="p">,</span> <span class="n">create_feature</span>
|
||||
|
||||
<span class="n">verbose</span> <span class="o">=</span> <span class="bp">True</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<p>this class handles shapefile layers</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">ShapefileLayer</span><span class="p">(</span><span class="n">LayerSource</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
<p>initialize shapefile reader</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">import</span> <span class="nn">shapefile</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
|
||||
<span class="n">src</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'ascii'</span><span class="p">,</span> <span class="s">'ignore'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">shpSrc</span> <span class="o">=</span> <span class="n">src</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sr</span> <span class="o">=</span> <span class="n">shapefile</span><span class="o">.</span><span class="n">Reader</span><span class="p">(</span><span class="n">src</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">recs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">shapes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">load_records</span><span class="p">()</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>load shapefile records into memory. note that only the records are loaded and not the shapes.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">load_records</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">recs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sr</span><span class="o">.</span><span class="n">records</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sr</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attrIndex</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attrIndex</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span>
|
||||
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<p>returns a shape of this shapefile. if requested for the first time, the shape is loaded from shapefile (slow)</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">get_shape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">shapes</span><span class="p">:</span> <span class="c"># check cache</span>
|
||||
<span class="n">shp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shapes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span> <span class="c"># load shape from shapefile</span>
|
||||
<span class="n">shp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shapes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sr</span><span class="o">.</span><span class="n">shapeRecord</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">shape</span>
|
||||
<span class="k">return</span> <span class="n">shp</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
<p>returns a list of features matching to the attr -> value pair</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">get_features</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="nb">filter</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">ignore_holes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">charset</span><span class="o">=</span><span class="s">'utf-8'</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">try_encodings</span> <span class="o">=</span> <span class="p">(</span><span class="s">'utf-8'</span><span class="p">,</span> <span class="s">'latin-1'</span><span class="p">,</span> <span class="s">'iso-8859-2'</span><span class="p">)</span>
|
||||
<span class="n">tried_encodings</span> <span class="o">=</span> <span class="p">[</span><span class="n">charset</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">bbox</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bbox</span><span class="p">,</span> <span class="n">BBox</span><span class="p">):</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">(</span><span class="n">bbox</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">bbox</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bbox</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">bbox</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">bbox</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bbox</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">ignored</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">recs</span><span class="p">)):</span>
|
||||
<span class="n">drec</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">)):</span>
|
||||
<span class="n">drec</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="n">j</span><span class="p">]]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">recs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">filter</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="nb">filter</span><span class="p">(</span><span class="n">drec</span><span class="p">):</span>
|
||||
<span class="n">props</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">)):</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">recs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">val</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">charset</span><span class="p">)</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">'warning: could not decode "</span><span class="si">%s</span><span class="s">" to </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">charset</span><span class="p">)</span>
|
||||
<span class="n">next_guess</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">for</span> <span class="n">enc</span> <span class="ow">in</span> <span class="n">try_encodings</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">enc</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tried_encodings</span><span class="p">:</span>
|
||||
<span class="n">next_guess</span> <span class="o">=</span> <span class="n">enc</span>
|
||||
<span class="n">tried_encodings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">enc</span><span class="p">)</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">if</span> <span class="n">next_guess</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">'trying </span><span class="si">%s</span><span class="s"> now..'</span> <span class="o">%</span> <span class="n">next_guess</span>
|
||||
<span class="n">charset</span> <span class="o">=</span> <span class="n">next_guess</span>
|
||||
<span class="n">j</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'having problems to decode the input data "</span><span class="si">%s</span><span class="s">"'</span> <span class="o">%</span> <span class="n">val</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">)):</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">val</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">props</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="n">j</span><span class="p">]]</span> <span class="o">=</span> <span class="n">val</span>
|
||||
|
||||
<span class="n">shp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_shape</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
|
||||
<span class="n">geom</span> <span class="o">=</span> <span class="n">shape2geometry</span><span class="p">(</span><span class="n">shp</span><span class="p">,</span> <span class="n">ignore_holes</span><span class="o">=</span><span class="n">ignore_holes</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="n">min_area</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="n">bbox</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">geom</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">ignored</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="n">feature</span> <span class="o">=</span> <span class="n">create_feature</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="n">props</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">feature</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">bbox</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">ignored</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">"-ignoring </span><span class="si">%d</span><span class="s"> shapes (not in bounds </span><span class="si">%s</span><span class="s"> )"</span> <span class="o">%</span> <span class="p">(</span><span class="n">ignored</span><span class="p">,</span> <span class="n">bbox</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">shape2geometry</span><span class="p">(</span><span class="n">shp</span><span class="p">,</span> <span class="n">ignore_holes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">bbox</span><span class="p">:</span>
|
||||
<span class="n">sbbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">top</span><span class="o">=</span><span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">width</span><span class="o">=</span><span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">height</span><span class="o">=</span><span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">-</span> <span class="n">shp</span><span class="o">.</span><span class="n">bbox</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">bbox</span><span class="o">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">sbbox</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>ignore the shape if it's not within the bbox</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">return</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">shp</span><span class="o">.</span><span class="n">shapeType</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">):</span> <span class="c"># multi-polygon</span>
|
||||
<span class="n">geom</span> <span class="o">=</span> <span class="n">shape2polygon</span><span class="p">(</span><span class="n">shp</span><span class="p">,</span> <span class="n">ignore_holes</span><span class="o">=</span><span class="n">ignore_holes</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="n">min_area</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">shp</span><span class="o">.</span><span class="n">shapeType</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> <span class="c"># line</span>
|
||||
<span class="n">geom</span> <span class="o">=</span> <span class="n">points2line</span><span class="p">(</span><span class="n">shp</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'unknown shape type (</span><span class="si">%d</span><span class="s">) in shapefile </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">shp</span><span class="o">.</span><span class="n">shapeType</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">shpSrc</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">geom</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
<p>converts a shapefile polygon to geometry.MultiPolygon</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">shape2polygon</span><span class="p">(</span><span class="n">shp</span><span class="p">,</span> <span class="n">ignore_holes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
<p>from kartograph.geometry import MultiPolygon</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">from</span> <span class="nn">shapely.geometry</span> <span class="kn">import</span> <span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span>
|
||||
<span class="kn">from</span> <span class="nn">kartograph.geometry.utils</span> <span class="kn">import</span> <span class="n">is_clockwise</span>
|
||||
<span class="n">parts</span> <span class="o">=</span> <span class="n">shp</span><span class="o">.</span><span class="n">parts</span><span class="p">[:]</span>
|
||||
<span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">shp</span><span class="o">.</span><span class="n">points</span><span class="p">))</span>
|
||||
<span class="n">exteriors</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">holes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="n">shp</span><span class="o">.</span><span class="n">points</span><span class="p">[</span><span class="n">parts</span><span class="p">[</span><span class="n">j</span><span class="p">]:</span><span class="n">parts</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">shp</span><span class="o">.</span><span class="n">shapeType</span> <span class="o">==</span> <span class="mi">15</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
<p>remove z-coordinate from PolygonZ contours (not supported)</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)):</span>
|
||||
<span class="n">pts</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="n">k</span><span class="p">][:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="n">cw</span> <span class="o">=</span> <span class="n">is_clockwise</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">cw</span><span class="p">:</span>
|
||||
<span class="n">exteriors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">holes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ignore_holes</span><span class="p">:</span>
|
||||
<span class="n">holes</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">exteriors</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">Polygon</span><span class="p">(</span><span class="n">exteriors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">holes</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">exteriors</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
<p>use multipolygon, but we need to assign the holes to the right
|
||||
exteriors</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">from</span> <span class="nn">kartograph.geometry</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
<span class="n">used_holes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="n">polygons</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">ext</span> <span class="ow">in</span> <span class="n">exteriors</span><span class="p">:</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="n">my_holes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">pt</span> <span class="ow">in</span> <span class="n">ext</span><span class="p">:</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">holes</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">h</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">used_holes</span><span class="p">:</span>
|
||||
<span class="n">hole</span> <span class="o">=</span> <span class="n">holes</span><span class="p">[</span><span class="n">h</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">bbox</span><span class="o">.</span><span class="n">check_point</span><span class="p">(</span><span class="n">hole</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
<p>this is a very weak test but it should be sufficient</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">used_holes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
||||
<span class="n">my_holes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hole</span><span class="p">)</span>
|
||||
<span class="n">polygons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Polygon</span><span class="p">(</span><span class="n">ext</span><span class="p">,</span> <span class="n">my_holes</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">min_area</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
<p>compute maximum area</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">max_area</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">poly</span> <span class="ow">in</span> <span class="n">polygons</span><span class="p">:</span>
|
||||
<span class="n">max_area</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_area</span><span class="p">,</span> <span class="n">poly</span><span class="o">.</span><span class="n">area</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
<p>filter out polygons that are below min_area * max_area</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">polygons</span> <span class="o">=</span> <span class="p">[</span><span class="n">poly</span> <span class="k">for</span> <span class="n">poly</span> <span class="ow">in</span> <span class="n">polygons</span> <span class="k">if</span> <span class="n">poly</span><span class="o">.</span><span class="n">area</span> <span class="o">>=</span> <span class="n">min_area</span> <span class="o">*</span> <span class="n">max_area</span><span class="p">]</span>
|
||||
<span class="n">poly</span> <span class="o">=</span> <span class="n">MultiPolygon</span><span class="p">(</span><span class="n">polygons</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">KartographError</span><span class="p">(</span><span class="s">'shapefile import failed - no outer polygon found'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">poly</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
<p>converts a shapefile line to geometry.Line</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">points2line</span><span class="p">(</span><span class="n">shp</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-21'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-21'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">from</span> <span class="nn">kartograph.geometry</span> <span class="kn">import</span> <span class="n">PolyLine</span>
|
||||
<span class="n">parts</span> <span class="o">=</span> <span class="n">shp</span><span class="o">.</span><span class="n">parts</span><span class="p">[:]</span>
|
||||
<span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">shp</span><span class="o">.</span><span class="n">points</span><span class="p">))</span>
|
||||
<span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="n">shp</span><span class="o">.</span><span class="n">points</span><span class="p">[</span><span class="n">parts</span><span class="p">[</span><span class="n">j</span><span class="p">]:</span><span class="n">parts</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PolyLine</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
1104
source/map.html
Normal file
329
source/maplayer.html
Normal file
@@ -0,0 +1,329 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>maplayer.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>maplayer.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">layersource</span> <span class="kn">import</span> <span class="n">handle_layer_source</span>
|
||||
<span class="kn">from</span> <span class="nn">filter</span> <span class="kn">import</span> <span class="n">filter_record</span>
|
||||
|
||||
|
||||
<span class="n">_verbose</span> <span class="o">=</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
<h2>MapLayer</h2>
|
||||
<p>Represents a layer in the map which contains a list of map features</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">MapLayer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">_map</span><span class="p">,</span> <span class="n">cache</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
<p>Store layer properties as instance properties</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="nb">id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">options</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">map</span> <span class="o">=</span> <span class="n">_map</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cache</span> <span class="o">=</span> <span class="n">cache</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>Make sure that the layer id is unique within the map.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">layersById</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">+=</span> <span class="s">"_"</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
<p>Instantiate the layer source which will generate features from the source
|
||||
geo data such as shapefiles or virtual sources such as graticule lines.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="bp">self</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="n">handle_layer_source</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
<h3>get_features()</h3>
|
||||
<p>Returns a list of projected and filtered features of a layer.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">get_features</span><span class="p">(</span><span class="n">layer</span><span class="p">,</span> <span class="nb">filter</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">min_area</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">opts</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">options</span>
|
||||
<span class="n">is_projected</span> <span class="o">=</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
<p>Let's see if theres a better bounding box than this..</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bbox</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">180</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">,</span> <span class="mi">180</span><span class="p">,</span> <span class="mi">90</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
<p>Use the clipping mode defined in the map configuration</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'mode'</span><span class="p">]</span> <span class="o">==</span> <span class="s">"bbox"</span><span class="p">:</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'data'</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
<p>The 'crop' property overrides the clipping settings</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="s">'crop'</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">]</span> <span class="ow">and</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'crop'</span><span class="p">]:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>If crop is set to "auto", which is the default behaviour, Kartograph
|
||||
will use the actual bounding geometry to compute the bounding box</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'crop'</span><span class="p">]</span> <span class="o">==</span> <span class="s">"auto"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">_unprojected_bounds</span><span class="p">:</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">_unprojected_bounds</span>
|
||||
<span class="n">bbox</span><span class="o">.</span><span class="n">inflate</span><span class="p">(</span><span class="n">inflate</span><span class="o">=</span><span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'padding'</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">'could not compute bounding box for auto-cropping'</span>
|
||||
<span class="k">else</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
<p>otherwise it will use the user defined bbox in the format
|
||||
[minLon, minLat, maxLon, maxLat]</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bbox</span> <span class="o">=</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">][</span><span class="s">'crop'</span><span class="p">]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
<p>If the layer has the "src" property, it is a <strong>regular map layer</strong> source, which
|
||||
means that there's an exernal file that we load the geometry and meta data from.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="s">'src'</span> <span class="ow">in</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'filter'</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="nb">filter</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">filter</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">rec</span><span class="p">:</span> <span class="n">filter_record</span><span class="p">(</span><span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'filter'</span><span class="p">],</span> <span class="n">rec</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
<p>Now we ask the layer source to generate the features that will be displayed
|
||||
in the map.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">features</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">get_features</span><span class="p">(</span>
|
||||
<span class="nb">filter</span><span class="o">=</span><span class="nb">filter</span><span class="p">,</span>
|
||||
<span class="n">bbox</span><span class="o">=</span><span class="n">bbox</span><span class="p">,</span>
|
||||
<span class="n">ignore_holes</span><span class="o">=</span><span class="s">'ignore-holes'</span> <span class="ow">in</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span> <span class="ow">and</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'ignore-holes'</span><span class="p">],</span>
|
||||
<span class="n">charset</span><span class="o">=</span><span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'charset'</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">_verbose</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">'loaded </span><span class="si">%d</span><span class="s"> features from shapefile </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">features</span><span class="p">),</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'src'</span><span class="p">])</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
<p>In contrast to regular layers, the geometry for <strong>special (or virtual) layers</strong> is generated
|
||||
by Kartograph itself, based on some properties defined in the layer config.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">elif</span> <span class="s">'special'</span> <span class="ow">in</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
<p>The graticule layer generates line features for longitudes and latitudes</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">"graticule"</span><span class="p">:</span>
|
||||
<span class="n">lats</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">]</span>
|
||||
<span class="n">lons</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">]</span>
|
||||
<span class="n">features</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">get_features</span><span class="p">(</span><span class="n">lats</span><span class="p">,</span> <span class="n">lons</span><span class="p">,</span> <span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">proj</span><span class="p">,</span> <span class="n">bbox</span><span class="o">=</span><span class="n">bbox</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
<p>The "sea" layer generates a MultiPolygon that represents the entire boundary
|
||||
of the map. Especially useful for non-cylindrical map projections.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">elif</span> <span class="n">layer</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">"sea"</span><span class="p">:</span>
|
||||
<span class="n">features</span> <span class="o">=</span> <span class="n">layer</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">get_features</span><span class="p">(</span><span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">proj</span><span class="p">)</span>
|
||||
<span class="n">is_projected</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="n">features</span><span class="p">:</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
<p>If the features are not projected yet, we project them now.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_projected</span><span class="p">:</span>
|
||||
<span class="n">feature</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">proj</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-20'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-20'>#</a>
|
||||
</div>
|
||||
<p>Transform features to view coordinates.</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">feature</span><span class="o">.</span><span class="n">project_view</span><span class="p">(</span><span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">view</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-21'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-21'>#</a>
|
||||
</div>
|
||||
<p>Remove features that don't intersect our clipping polygon</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">view_poly</span><span class="p">:</span>
|
||||
<span class="n">features</span> <span class="o">=</span> <span class="p">[</span><span class="n">feature</span> <span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="n">features</span>
|
||||
<span class="k">if</span> <span class="n">feature</span><span class="o">.</span><span class="n">geometry</span> <span class="ow">and</span> <span class="n">feature</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">layer</span><span class="o">.</span><span class="n">map</span><span class="o">.</span><span class="n">view_poly</span><span class="p">)]</span>
|
||||
<span class="n">layer</span><span class="o">.</span><span class="n">features</span> <span class="o">=</span> <span class="n">features</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
499
source/options.html
Normal file
@@ -0,0 +1,499 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>options.py</title>
|
||||
<link rel="stylesheet" href="pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>options.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<p>API 2.0
|
||||
helper methods for validating options dictionary</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="kn">import</span> <span class="nn">os.path</span><span class="o">,</span> <span class="nn">proj</span><span class="o">,</span> <span class="nn">errors</span>
|
||||
|
||||
|
||||
<span class="n">Error</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">KartographOptionParseError</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">is_str</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
<p>check out that the option dict is filled correctly</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">opts</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
<p>projection</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">parse_proj</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span>
|
||||
<span class="n">parse_layers</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span>
|
||||
<span class="n">parse_bounds</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span>
|
||||
<span class="n">parse_export</span><span class="p">(</span><span class="n">opts</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
<p>checks projections</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_proj</span><span class="p">(</span><span class="n">opts</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">if</span> <span class="s">'proj'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="p">[</span><span class="s">'proj'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">prj</span> <span class="o">=</span> <span class="n">opts</span><span class="p">[</span><span class="s">'proj'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s">'id'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">prj</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s">'bounds'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
|
||||
<span class="n">prj</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'robinson'</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">prj</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'laea'</span>
|
||||
<span class="k">if</span> <span class="n">prj</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">proj</span><span class="o">.</span><span class="n">projections</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'unknown projection'</span><span class="p">)</span>
|
||||
<span class="n">prjClass</span> <span class="o">=</span> <span class="n">proj</span><span class="o">.</span><span class="n">projections</span><span class="p">[</span><span class="n">prj</span><span class="p">[</span><span class="s">'id'</span><span class="p">]]</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">prjClass</span><span class="o">.</span><span class="n">attributes</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">prj</span><span class="p">:</span>
|
||||
<span class="n">prj</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="s">"auto"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">prj</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">!=</span> <span class="s">"auto"</span><span class="p">:</span>
|
||||
<span class="n">prj</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">prj</span><span class="p">[</span><span class="n">attr</span><span class="p">])</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layers</span><span class="p">(</span><span class="n">opts</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'layers'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="p">[</span><span class="s">'layers'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">l_id</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">g_id</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">s_id</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">[</span><span class="s">'layers'</span><span class="p">]:</span>
|
||||
<span class="k">if</span> <span class="s">'styles'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'styles'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">if</span> <span class="s">'src'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span> <span class="ow">and</span> <span class="s">'special'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'you need to define the source for your layers'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s">'src'</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'src'</span><span class="p">]):</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'layer source not found: '</span> <span class="o">+</span> <span class="n">layer</span><span class="p">[</span><span class="s">'src'</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="s">'id'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'layer_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">l_id</span><span class="p">)</span>
|
||||
<span class="n">l_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="s">'charset'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'charset'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'utf-8'</span>
|
||||
<span class="k">elif</span> <span class="s">'special'</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'graticule'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s">'id'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'graticule'</span>
|
||||
<span class="k">if</span> <span class="n">g_id</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">+=</span> <span class="s">'_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">g_id</span><span class="p">)</span>
|
||||
<span class="n">g_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="s">'fill'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">[</span><span class="s">'styles'</span><span class="p">]:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'styles'</span><span class="p">][</span><span class="s">'fill'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'None'</span>
|
||||
<span class="n">parse_layer_graticule</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">layer</span><span class="p">[</span><span class="s">'special'</span><span class="p">]</span> <span class="o">==</span> <span class="s">'sea'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s">'id'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'sea'</span>
|
||||
<span class="k">if</span> <span class="n">s_id</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'id'</span><span class="p">]</span> <span class="o">+=</span> <span class="s">'_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">s_id</span><span class="p">)</span>
|
||||
<span class="n">s_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="n">parse_layer_attributes</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="n">parse_layer_filter</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="n">parse_layer_join</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="n">parse_layer_simplify</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="n">parse_layer_subtract</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span>
|
||||
<span class="n">parse_layer_cropping</span><span class="p">(</span><span class="n">layer</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_attributes</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'attributes'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">attrs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">]:</span>
|
||||
<span class="k">if</span> <span class="n">is_str</span><span class="p">(</span><span class="n">attr</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">],</span> <span class="nb">list</span><span class="p">):</span> <span class="c"># ["ISO_A3", "FIPS"]</span>
|
||||
<span class="n">attrs</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">'src'</span><span class="p">:</span> <span class="n">attr</span><span class="p">,</span> <span class="s">'tgt'</span><span class="p">:</span> <span class="n">attr</span><span class="p">})</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">],</span> <span class="nb">dict</span><span class="p">):</span> <span class="c"># { "ISO_A3": "iso" }</span>
|
||||
<span class="n">attrs</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">'src'</span><span class="p">:</span> <span class="n">attr</span><span class="p">,</span> <span class="s">'tgt'</span><span class="p">:</span> <span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">][</span><span class="n">attr</span><span class="p">]})</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span> <span class="ow">and</span> <span class="s">'src'</span> <span class="ow">in</span> <span class="n">attr</span> <span class="ow">and</span> <span class="s">'tgt'</span> <span class="ow">in</span> <span class="n">attr</span><span class="p">:</span>
|
||||
<span class="n">attrs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'attributes'</span><span class="p">]</span> <span class="o">=</span> <span class="n">attrs</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-9'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-9'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_filter</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'filter'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'filter'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">return</span> <span class="c"># todo: check valid filter syntax (recursivly, place code in filter.py)</span>
|
||||
<span class="nb">filter</span> <span class="o">=</span> <span class="n">layer</span><span class="p">[</span><span class="s">'filter'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s">'type'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">:</span>
|
||||
<span class="nb">filter</span><span class="p">[</span><span class="s">'type'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'include'</span>
|
||||
<span class="k">if</span> <span class="s">'attribute'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'layer filter must define an attribute to filter on'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s">'equals'</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">filter</span><span class="p">[</span><span class="s">'equals'</span><span class="p">],</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
|
||||
<span class="nb">filter</span><span class="p">[</span><span class="s">'equals'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nb">filter</span><span class="p">[</span><span class="s">'equals'</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="s">'greater-than'</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="nb">filter</span><span class="p">[</span><span class="s">'greater-than'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">filter</span><span class="p">[</span><span class="s">'greater-than'</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'could not convert filter value "greater-than" to float'</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="s">'less-than'</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="nb">filter</span><span class="p">[</span><span class="s">'less-than'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">filter</span><span class="p">[</span><span class="s">'less-than'</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'could not convert filter value "less-than" to float'</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'you must define either "equals", "greater-than" or "less-than" in the filter'</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-10'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-10'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_join</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'join'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'join'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="p">[</span><span class="s">'join'</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">join</span> <span class="o">=</span> <span class="n">layer</span><span class="p">[</span><span class="s">'join'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s">'group-by'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">join</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'missing attribute "group-by": you need to specify an attribute by which the features should be joined.'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s">'groups'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">join</span><span class="p">:</span>
|
||||
<span class="n">join</span><span class="p">[</span><span class="s">'groups'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">if</span> <span class="s">'group-as'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">join</span><span class="p">:</span>
|
||||
<span class="n">join</span><span class="p">[</span><span class="s">'group-as'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-11'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-11'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_simplify</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'unify-precision'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'unify-precision'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">if</span> <span class="s">'simplify'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">False</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">)):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-12'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-12'>#</a>
|
||||
</div>
|
||||
<p>default to visvalingam-whyatt</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s">"method"</span><span class="p">:</span> <span class="s">"visvalingam-whyatt"</span><span class="p">,</span> <span class="s">"tolerance"</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">])}</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">][</span><span class="s">'tolerance'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'simplify'</span><span class="p">][</span><span class="s">'tolerance'</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'could not convert simplification amount to float'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s">'filter-islands'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'filter-islands'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-13'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-13'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_subtract</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'subtract-from'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'subtract-from'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'subtract-from'</span><span class="p">],</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">)):</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'subtract-from'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">layer</span><span class="p">[</span><span class="s">'subtract-from'</span><span class="p">]]</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-14'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-14'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_cropping</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'crop-to'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'crop-to'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-15'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-15'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_layer_graticule</span><span class="p">(</span><span class="n">layer</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'latitudes'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
|
||||
<span class="n">step</span> <span class="o">=</span> <span class="n">layer</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">]</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">lat</span> <span class="ow">in</span> <span class="n">_xfrange</span><span class="p">(</span><span class="n">step</span><span class="p">,</span> <span class="mi">90</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'latitudes'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">[</span><span class="n">lat</span><span class="p">,</span> <span class="o">-</span><span class="n">lat</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">'longitudes'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layer</span><span class="p">:</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">layer</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
|
||||
<span class="n">step</span> <span class="o">=</span> <span class="n">layer</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">]</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">lon</span> <span class="ow">in</span> <span class="n">_xfrange</span><span class="p">(</span><span class="n">step</span><span class="p">,</span> <span class="mi">181</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">lon</span> <span class="o">==</span> <span class="mi">180</span><span class="p">:</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="p">[</span><span class="n">lon</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="p">[</span><span class="n">lon</span><span class="p">,</span> <span class="o">-</span><span class="n">lon</span><span class="p">]</span>
|
||||
<span class="n">layer</span><span class="p">[</span><span class="s">'longitudes'</span><span class="p">]</span> <span class="o">+=</span> <span class="n">p</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-16'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-16'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">_xfrange</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">stop</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
|
||||
<span class="k">while</span> <span class="p">(</span><span class="n">step</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">start</span> <span class="o"><</span> <span class="n">stop</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">step</span> <span class="o"><</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">start</span> <span class="o">></span> <span class="n">step</span><span class="p">):</span>
|
||||
<span class="k">yield</span> <span class="n">start</span>
|
||||
<span class="n">start</span> <span class="o">+=</span> <span class="n">step</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-17'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-17'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_bounds</span><span class="p">(</span><span class="n">opts</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">'bounds'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-18'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-18'>#</a>
|
||||
</div>
|
||||
<p>return</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="n">bounds</span> <span class="o">=</span> <span class="n">opts</span><span class="p">[</span><span class="s">'bounds'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s">'mode'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">bounds</span><span class="p">:</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">'mode'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'bbox'</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">'data'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">bounds</span><span class="p">:</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">'data'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">180</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">,</span> <span class="mi">180</span><span class="p">,</span> <span class="mi">90</span><span class="p">]</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">'mode'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'bbox'</span>
|
||||
|
||||
<span class="n">mode</span> <span class="o">=</span> <span class="n">bounds</span><span class="p">[</span><span class="s">'mode'</span><span class="p">]</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">bounds</span><span class="p">[</span><span class="s">'data'</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">'crop'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">bounds</span><span class="p">:</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">'crop'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'auto'</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">"padding"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">bounds</span><span class="p">:</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">"padding"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s">"bbox"</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'bounds mode bbox requires array with exactly 4 values [lon0,lat0,lon1,lat]'</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">Error</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'bounds mode bbox requires array with exactly 4 values [lon0,lat0,lon1,lat]'</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s">"points"</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)):</span>
|
||||
<span class="n">pt</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">pt</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="n">pt</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'bounds mode points requires array with (lon,lat) tuples'</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">Error</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'bounds mode points requires array with (lon,lat) tuples'</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="ow">in</span> <span class="p">(</span><span class="s">"polygons"</span><span class="p">,</span> <span class="s">"polygon"</span><span class="p">):</span>
|
||||
<span class="n">bounds</span><span class="p">[</span><span class="s">'mode'</span><span class="p">]</span> <span class="o">=</span> <span class="n">mode</span> <span class="o">=</span> <span class="s">"polygons"</span>
|
||||
<span class="k">if</span> <span class="s">"layer"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">is_str</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">"layer"</span><span class="p">]):</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'you must specify a layer for bounds mode '</span> <span class="o">+</span> <span class="n">mode</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s">"filter"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">"filter"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">if</span> <span class="s">"attribute"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">is_str</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">"attribute"</span><span class="p">]):</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">"attribute"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">if</span> <span class="s">"values"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="s">"attribute"</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">"values"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'you must specify a list of values to match in bounds mode '</span> <span class="o">+</span> <span class="n">mode</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_str</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">"values"</span><span class="p">]):</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">"values"</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="s">"values"</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="s">"min-area"</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">"min-area"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">"min-area"</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Error</span><span class="p">(</span><span class="s">'min_area must be an integer or float'</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="s">'min-area'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-19'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-19'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">def</span> <span class="nf">parse_export</span><span class="p">(</span><span class="n">opts</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s">"export"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="p">[</span><span class="s">"export"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">exp</span> <span class="o">=</span> <span class="n">opts</span><span class="p">[</span><span class="s">"export"</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s">"width"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span> <span class="ow">and</span> <span class="s">"height"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"width"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1000</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"height"</span><span class="p">]</span> <span class="o">=</span> <span class="s">"auto"</span>
|
||||
<span class="k">elif</span> <span class="s">"height"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"height"</span><span class="p">]</span> <span class="o">=</span> <span class="s">"auto"</span>
|
||||
<span class="k">elif</span> <span class="s">"width"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"width"</span><span class="p">]</span> <span class="o">=</span> <span class="s">"auto"</span>
|
||||
|
||||
<span class="k">if</span> <span class="s">"ratio"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"ratio"</span><span class="p">]</span> <span class="o">=</span> <span class="s">"auto"</span>
|
||||
<span class="k">if</span> <span class="s">"round"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"round"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">"round"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">exp</span><span class="p">[</span><span class="s">"round"</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="s">"crop-to-view"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exp</span><span class="p">:</span>
|
||||
<span class="n">exp</span><span class="p">[</span><span class="s">'crop-to-view'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||
219
source/proj/__init__.html
Normal file
@@ -0,0 +1,219 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<title>__init__.py</title>
|
||||
<link rel="stylesheet" href="../pycco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="background"></div>
|
||||
<div id='container'>
|
||||
<div class='section'>
|
||||
<div class='docs'><h1>__init__.py</h1></div>
|
||||
</div>
|
||||
<div class='clearall'>
|
||||
<div class='section' id='section-0'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-0'>#</a>
|
||||
</div>
|
||||
<pre><code>kartograph - a svg mapping library
|
||||
Copyright (C) 2011 Gregor Aisch
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
</code></pre>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="n">projections</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">base</span> <span class="kn">import</span> <span class="n">Proj</span>
|
||||
<span class="kn">from</span> <span class="nn">cylindrical</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'lonlat'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Equirectangular</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'cea'</span><span class="p">]</span> <span class="o">=</span> <span class="n">CEA</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'gallpeters'</span><span class="p">]</span> <span class="o">=</span> <span class="n">GallPeters</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'hobodyer'</span><span class="p">]</span> <span class="o">=</span> <span class="n">HoboDyer</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'behrmann'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Behrmann</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'balthasart'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Balthasart</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'mercator'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Mercator</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'ll'</span><span class="p">]</span> <span class="o">=</span> <span class="n">LonLat</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">pseudocylindrical</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'naturalearth'</span><span class="p">]</span> <span class="o">=</span> <span class="n">NaturalEarth</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'robinson'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Robinson</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'eckert4'</span><span class="p">]</span> <span class="o">=</span> <span class="n">EckertIV</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'sinusoidal'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Sinusoidal</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'mollweide'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Mollweide</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'wagner4'</span><span class="p">]</span> <span class="o">=</span> <span class="n">WagnerIV</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'wagner5'</span><span class="p">]</span> <span class="o">=</span> <span class="n">WagnerV</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'loximuthal'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Loximuthal</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'canters1'</span><span class="p">]</span> <span class="o">=</span> <span class="n">CantersModifiedSinusoidalI</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'goodehomolosine'</span><span class="p">]</span> <span class="o">=</span> <span class="n">GoodeHomolosine</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'hatano'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Hatano</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'aitoff'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Aitoff</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'winkel3'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Winkel3</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'nicolosi'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Nicolosi</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">azimuthal</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'ortho'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Orthographic</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'laea'</span><span class="p">]</span> <span class="o">=</span> <span class="n">LAEA</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'stereo'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Stereographic</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'satellite'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Satellite</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'eda'</span><span class="p">]</span> <span class="o">=</span> <span class="n">EquidistantAzimuthal</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'aitoff'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Aitoff</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">conic</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">projections</span><span class="p">[</span><span class="s">'lcc'</span><span class="p">]</span> <span class="o">=</span> <span class="n">LCC</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-1'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-1'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">Proj4</span><span class="p">(</span><span class="n">Proj</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-2'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-2'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">projstr</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">pyproj</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">proj</span> <span class="o">=</span> <span class="n">pyproj</span><span class="o">.</span><span class="n">Proj</span><span class="p">(</span><span class="n">projstr</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-3'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-3'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lon</span><span class="p">,</span> <span class="n">lat</span><span class="p">):</span>
|
||||
<span class="n">lon</span><span class="p">,</span> <span class="n">lat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ll</span><span class="p">(</span><span class="n">lon</span><span class="p">,</span> <span class="n">lat</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">proj</span><span class="p">(</span><span class="n">lon</span><span class="p">,</span> <span class="n">lat</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-4'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-4'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre><span class="k">class</span> <span class="nc">LCC__</span><span class="p">(</span><span class="n">Proj4</span><span class="p">):</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-5'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-5'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lat0</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lon0</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lat1</span><span class="o">=</span><span class="mi">28</span><span class="p">,</span> <span class="n">lat2</span><span class="o">=</span><span class="mi">30</span><span class="p">):</span>
|
||||
<span class="n">Proj4</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">'+proj=lcc +lat_0=</span><span class="si">%f</span><span class="s"> +lon_0=</span><span class="si">%f</span><span class="s"> +lat_1=</span><span class="si">%f</span><span class="s"> +lat_2=</span><span class="si">%f</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">lat0</span><span class="p">,</span> <span class="n">lon0</span><span class="p">,</span> <span class="n">lat1</span><span class="p">,</span> <span class="n">lat2</span><span class="p">))</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-6'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-6'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">_visible</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lon</span><span class="p">,</span> <span class="n">lat</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">True</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-7'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-7'>#</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="k">def</span> <span class="nf">_truncate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">for</span> <span class="n">pjname</span> <span class="ow">in</span> <span class="n">projections</span><span class="p">:</span>
|
||||
<span class="n">projections</span><span class="p">[</span><span class="n">pjname</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">pjname</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
<div class='section' id='section-8'>
|
||||
<div class='docs'>
|
||||
<div class='octowrap'>
|
||||
<a class='octothorpe' href='#section-8'>#</a>
|
||||
</div>
|
||||
<p>some class testing
|
||||
p = LAEA(52.0,10.0)
|
||||
x,y = p.project(50,5)
|
||||
assert (round(x,2),round(y,2)) == (3962799.45, -2999718.85), 'LAEA proj error'</p>
|
||||
</div>
|
||||
<div class='code'>
|
||||
<div class="highlight"><pre> <span class="kn">from</span> <span class="nn">kartograph.geometry</span> <span class="kn">import</span> <span class="n">BBox</span>
|
||||
|
||||
<span class="k">print</span> <span class="n">Proj</span><span class="o">.</span><span class="n">fromXML</span><span class="p">(</span><span class="n">Robinson</span><span class="p">(</span><span class="n">lat0</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">lon0</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span><span class="o">.</span><span class="n">toXML</span><span class="p">(),</span> <span class="n">projections</span><span class="p">)</span>
|
||||
|
||||
<span class="n">Robinson</span><span class="p">(</span><span class="n">lat0</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">lon0</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">pj</span> <span class="ow">in</span> <span class="n">projections</span><span class="p">:</span>
|
||||
<span class="n">Proj</span> <span class="o">=</span> <span class="n">projections</span><span class="p">[</span><span class="n">pj</span><span class="p">]</span>
|
||||
<span class="n">bbox</span> <span class="o">=</span> <span class="n">BBox</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">proj</span> <span class="o">=</span> <span class="n">Proj</span><span class="p">(</span><span class="n">lon0</span><span class="o">=</span><span class="mi">60</span><span class="p">)</span>
|
||||
<span class="k">print</span> <span class="n">proj</span><span class="o">.</span><span class="n">project</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">print</span> <span class="n">proj</span><span class="o">.</span><span class="n">world_bounds</span><span class="p">(</span><span class="n">bbox</span><span class="p">)</span>
|
||||
<span class="k">print</span> <span class="n">proj</span><span class="o">.</span><span class="n">toXML</span><span class="p">()</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">print</span> <span class="s">'Error'</span><span class="p">,</span> <span class="n">pj</span>
|
||||
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='clearall'></div>
|
||||
</div>
|
||||
</body>
|
||||