{"version":3,"sources":["webpack:///./src/pages/docs/Miscellaneous/index.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,wNAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,qBADR,qBAGA,wOAGA,2QAGA,oXAIA,gUAGA,mHACA,uBAAK,mBAAU,CACX,WAAc,OADb,YAIL,iBAAQ,CACN,GAAM,kBADR,kBAGA,4FACA,sBAEE,iBAAQ,CACN,WAAc,MADhB,WAKA,iBAAQ,CACN,WAAc,MADhB,SAKA,iBAAQ,CACN,WAAc,MADhB,SAKA,iBAAQ,CACN,WAAc,MADhB,UAKA,iBAAQ,CACN,WAAc,MADhB,WAKA,iBAAQ,CACN,WAAc,MADhB,SAKA,iBAAQ,CACN,WAAc,MADhB,iBAKA,iBAAQ,CACN,WAAc,MADhB,WAKA,iBAAQ,CACN,WAAc,MADhB,UAKA,iBAAQ,CACN,WAAc,MADhB,aAKA,iBAAQ,CACN,WAAc,MADhB,SAKA,iBAAQ,CACN,WAAc,MADhB,eAKA,iBAAQ,CACN,WAAc,MADhB,kBAKA,iBAAQ,CACN,WAAc,MADhB,WAKA,iBAAQ,CACN,WAAc,MADhB,QAKF,iBAAQ,CACN,GAAM,wBADR,wBAGA,2GACA,sBAEE,iBAAQ,CACN,WAAc,MADhB,4FAIE,gBAAO,CACL,KAAQ,iCACR,WAAc,MAFhB,mCAMF,iBAAQ,CACN,WAAc,MADhB,4JAMA,iBAAQ,CACN,WAAc,MADhB,4FAIE,gBAAO,CACL,KAAQ,oCACR,WAAc,MAFhB,sCAMF,iBAAQ,CACN,WAAc,MADhB,sJAMA,iBAAQ,CACN,WAAc,MADhB,wDAGE,gBAAO,CACL,KAAQ,yBACR,WAAc,MAFhB,2BAMF,iBAAQ,CACN,WAAc,MADhB,cAGE,yBAAgB,CACd,WAAc,MADhB,+CAKF,iBAAQ,CACN,WAAc,MADhB,uEAKF,uBAAK,mBAAU,CACX,WAAc,OADb,ic,sNA8BTH,EAAWI,gBAAiB","file":"component---src-pages-docs-miscellaneous-index-mdx-61c3d5e5e232a30cc43b.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/incubator-superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"country-map-tools\"\n    }}>{`Country Map Tools`}</h2>\n    <p>{`This tool is used in slices for visualization number or string by region, province or department of\nyour countries. So, if you want to use tools, you need ISO 3166-2 code of region, province or\ndepartment.`}</p>\n    <p>{`ISO 3166-2 is part of the ISO 3166 standard published by the International Organization for\nStandardization (ISO), and defines codes for identifying the principal subdivisions (e.g., provinces\nor states) of all countries coded in ISO 3166-1`}</p>\n    <p>{`The purpose of ISO 3166-2 is to establish an international standard of short and unique alphanumeric\ncodes to represent the relevant administrative divisions and dependent territories of all countries\nin a more convenient and less ambiguous form than their full names. Each complete ISO 3166-2 code\nconsists of two parts, separated by a hyphen:`}</p>\n    <p>{`The first part is the ISO 3166-1 alpha-2 code of the country; The second part is a string of up to\nthree alphanumeric characters, which is usually obtained from national sources and stems from coding\nsystems already in use in the country concerned, but may also be developed by the ISO itself.`}</p>\n    <p>{`We can apply these concepts to specify the state of Texas in the country of United States:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`US-TX\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"included-codes\"\n    }}>{`Included Codes`}</h3>\n    <p>{`The ISO codes for the following countries are included in Superset:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Belgium`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`China`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Egypt`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`France`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Germany`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Japan`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Liechtenstein`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Morocco`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Russia`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Singapore`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Spain`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Switzerland`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`United Kingdom`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Ukraine`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`USA`}</li>\n\n    </ul>\n    <h3 {...{\n      \"id\": \"adding-new-countries\"\n    }}>{`Adding New Countries`}</h3>\n    <p>{`To add a new country in country map tools, you need to follow the following steps:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`You need shapefiles which contain data of your map. You can get this file on this site:\n`}\n        <a {...{\n          \"href\": \"https://www.diva-gis.org/gdata\",\n          \"parentName\": \"li\"\n        }}>{`https://www.diva-gis.org/gdata`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`You need to add ISO 3166-2 with column name ISO for all record in your file. It’s important\nbecause it’s a norm for mapping your data with geojson file`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`You need to convert shapefile to geojson file. This action can make with ogr2ogr tools:\n`}\n        <a {...{\n          \"href\": \"https://www.gdal.org/ogr2ogr.html\",\n          \"parentName\": \"li\"\n        }}>{`https://www.gdal.org/ogr2ogr.html`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Put your geojson file in next folder : superset-frontend/src/visualizations/CountryMap/countries\nwith the next name : nameofyourcountries.geojson`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`You can to reduce size of geojson file on this site: `}\n        <a {...{\n          \"href\": \"https://mapshaper.org/\",\n          \"parentName\": \"li\"\n        }}>{`https://mapshaper.org/`}</a></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Go in file `}\n        <inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`superset-frontend/src/explore/controls.jsx`}</inlineCode></li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>{`Add your country in component ‘select_country’. Here's an example:`}</li>\n\n    </ul>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`    type: 'SelectControl',\n    label: 'Country Name Type',\n    default: 'France',\n    choices: [\n    'Belgium',\n    'Brazil',\n    'China',\n    'Egypt',\n    'France',\n    'Germany',\n    'Italy',\n    'Japan',\n    'Korea',\n    'Morocco',\n    'Netherlands',\n    'Russia',\n    'Singapore',\n    'Spain',\n    'Uk',\n    'Usa',\n    ].map(s => [s, s]),\n    description: 'The name of country that Superset should display',\n},\n`}</code></pre>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}