Compare commits

..

No commits in common. 'master' and 'package' have entirely different histories.

4
.gitignore vendored

@ -56,7 +56,3 @@ pnpm-debug.log*
package-lock.json
conf/data/ehcache
data/

@ -23,6 +23,6 @@ create database smartbi
//变更系统管理菜单显示权限
update sys_menu set hidden=1 where menu_id=40;
update sys_menu set hidden=1 where menu_id=58;
update sys_menu set title='数据源' where menu_id=34;
update sys_menu set title='数据探索' where menu_id=10;
update sys_menu set title='Dashboard' where menu_id=30;
```

@ -67,8 +67,6 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
<scope>provided</scope>
</dependency>
<dependency>
@ -94,7 +92,6 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
<scope>runtime</scope>
</dependency>
<dependency>
@ -198,6 +195,8 @@
<version>2.9.1</version>
</dependency>
<!--由于暂时插件接口未注册到公司仓库请先down下代码安装到本地仓库
https://github.com/dataease/dataease-plugins-->
<dependency>
<groupId>com.ipsos</groupId>
<artifactId>plugin-interface</artifactId>
@ -254,12 +253,6 @@
<artifactId>postgresql</artifactId>
<version>42.2.14</version>
</dependency>
<dependency>
<groupId>com.ipsos</groupId>
<artifactId>plugin-common</artifactId>
<version>1.3-LOCAL</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
@ -288,11 +281,10 @@
<configuration>
<addResources>true</addResources>
<excludes>
<!-- <exclude>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- </exclude>-->
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
@ -341,13 +333,6 @@
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
@ -411,24 +396,19 @@
</build>
<repositories>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<!-- <repository>-->
<!-- <id>AliRepo-aliyun</id>-->
<!-- <name>Alirepo.</name>-->
<!-- <url>https://maven.aliyun.com/repository/public</url>-->
<!-- </repository>-->
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</project>

@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
})
@ServletComponentScan
@EnableScheduling
@PropertySource(value = {"file:conf/ipsos.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
@PropertySource(value = {"file:conf/smartbi.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);

@ -7,7 +7,7 @@ import com.ipsos.base.domain.SysMenu;
import com.ipsos.base.domain.SysMenuExample;
import com.ipsos.base.mapper.SysMenuMapper;
import com.ipsos.base.mapper.ext.ExtPluginSysMenuMapper;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.plugins.util.PluginUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;

@ -1,6 +1,6 @@
package com.ipsos.base.mapper.ext;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@ -5,6 +5,7 @@ import com.ipsos.base.domain.Datasource;
import com.ipsos.commons.utils.CompressUtils;
import com.ipsos.commons.utils.MybatisInterceptorConfig;
import com.ipsos.interceptor.MybatisInterceptor;
import com.ipsos.base.domain.*;
import com.ipsos.base.domain.AuthSource;
import com.ipsos.base.domain.FileContent;
import org.mybatis.spring.annotation.MapperScan;

@ -9,7 +9,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${geo.rootpath:file:conf/data/feature/full/}")
@Value("${geo.rootpath:file:/opt/dataease/data/feature/full/}")
private String geoPath;
@Override

@ -1,6 +1,6 @@
package com.ipsos.controller.sys.request;
import com.ipsos.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import lombok.Data;
import java.io.Serializable;

@ -4,7 +4,6 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.ipsos.base.domain.Datasource;
import com.ipsos.datasource.dto.TableFiled;
import com.ipsos.dto.DatasourceDTO;
import com.ipsos.commons.utils.AuthUtils;
import com.ipsos.commons.utils.PageUtils;
@ -21,7 +20,6 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Api(tags = "数据源:数据源管理")
@ApiSupport(order = 30)
@ -85,18 +83,6 @@ public class DatasourceController {
return datasourceService.getTables(datasource);
}
@ApiOperation("查询表字段")
@PostMapping("/getFields/{tableName}")
public List<TableFiled> getFields(@RequestBody Datasource datasource, @PathVariable String tableName) throws Exception {
return datasourceService.getFields(datasource, tableName);
}
@ApiOperation("查询表字段")
@PostMapping("/getData/{tableName}/{fetchSize}")
public Map<String, List> getData(@RequestBody Datasource datasource, @PathVariable String tableName, @PathVariable Integer fetchSize) throws Exception {
return datasourceService.getDataByDatasource(datasource, tableName, 0, fetchSize);
}
@ApiIgnore
@PostMapping("/getSchema")
public List<String> getSchema(@RequestBody Datasource datasource) throws Exception {

@ -30,7 +30,6 @@ import com.ipsos.datasource.dto.*;
import com.ipsos.datasource.request.DatasourceRequest;
import com.ipsos.exception.DataEaseException;
import com.ipsos.i18n.Translator;
import com.ipsos.provider.QueryProvider;
import com.ipsos.service.dataset.DataSetGroupService;
import com.ipsos.service.message.DeMsgutil;
@ -97,31 +96,30 @@ public class DatasourceService {
List<DatasourceDTO> datasourceDTOS = extDataSourceMapper.queryUnion(request);
datasourceDTOS.forEach(datasourceDTO -> {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceDTO.getType());
try {
try{
switch (datasourceType) {
case mysql:
case mariadb:
case de_doris:
case ds_doris:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class)));
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class)) );
break;
case sqlServer:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), SqlServerConfiguration.class)));
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), SqlServerConfiguration.class)) );
break;
case oracle:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), OracleConfiguration.class)));
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), OracleConfiguration.class)) );
break;
case pg:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), PgConfiguration.class)));
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), PgConfiguration.class)) );
break;
case ck:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)));
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)) );
break;
default:
break;
}
} catch (Exception ignore) {
}
}catch (Exception ignore){}
});
return datasourceDTOS;
@ -145,8 +143,8 @@ public class DatasourceService {
DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andDataSourceIdEqualTo(datasourceId);
List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(datasetTables)) {
DataEaseException.throwException(datasetTables.size() + Translator.get("i18n_datasource_not_allow_delete_msg"));
if(CollectionUtils.isNotEmpty(datasetTables)){
DataEaseException.throwException(datasetTables.size() + Translator.get("i18n_datasource_not_allow_delete_msg"));
}
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
datasourceMapper.deleteByPrimaryKey(datasourceId);
@ -168,8 +166,8 @@ public class DatasourceService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
} catch (Exception e) {
return ResultHolder.success("Success");
}catch (Exception e){
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
}
@ -177,8 +175,8 @@ public class DatasourceService {
public ResultHolder validate(String datasourceId) {
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
if (datasource == null) {
return ResultHolder.error("Can not find datasource: " + datasourceId);
if(datasource == null){
return ResultHolder.error("Can not find datasource: "+ datasourceId);
}
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
@ -186,11 +184,11 @@ public class DatasourceService {
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
datasource.setStatus("Success");
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
} catch (Exception e) {
return ResultHolder.success("Success");
}catch (Exception e){
datasource.setStatus("Error");
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
} finally {
}finally {
datasourceMapper.updateByPrimaryKey(datasource);
}
}
@ -202,14 +200,6 @@ public class DatasourceService {
return datasourceProvider.getSchema(datasourceRequest);
}
public ResultHolder getTablesByDS(Datasource datasource) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
}
public List<DBTableDTO> getTables(Datasource datasource) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(datasource.getId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
@ -254,24 +244,6 @@ public class DatasourceService {
return datasourceMapper.selectByPrimaryKey(id);
}
public List<TableFiled> getFields(Datasource datasource, String tableName) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
datasourceRequest.setQuery(qp.convertTableToSql(tableName, datasource));
return datasourceProvider.fetchResultField(datasourceRequest);
}
public Map<String, List> getDataByDatasource(Datasource datasource, String tableName, Integer offset, Integer fetchSize) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
datasourceRequest.setQuery(qp.createSQLPreview(qp.convertTableToSql(tableName, datasource), null, offset, fetchSize));
return datasourceProvider.fetchResultAndField(datasourceRequest);
}
public void initAllDataSourceConnectionPool() {
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
datasources.forEach(datasource -> {
@ -295,7 +267,7 @@ public class DatasourceService {
}
}
public void updateDatasourceStatus() {
public void updateDatasourceStatus(){
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
datasources.forEach(datasource -> {
// checkAndUpdateDatasourceStatus(datasource);
@ -303,7 +275,7 @@ public class DatasourceService {
});
}
private void checkAndUpdateDatasourceStatus(Datasource datasource) {
private void checkAndUpdateDatasourceStatus(Datasource datasource){
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
@ -315,7 +287,7 @@ public class DatasourceService {
}
}
private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg) {
private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg){
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
@ -329,14 +301,14 @@ public class DatasourceService {
if (!StringUtils.equals(temp.getStatus(), "Error")) {
sendWebMsg(datasource);
datasourceMapper.updateByPrimaryKeySelective(datasource);
}
}
}
}
private void sendWebMsg(Datasource datasource) {
String id = datasource.getId();
AuthURD authURD = AuthUtils.authURDR(id);
Set<Long> userIds = AuthUtils.userIdsByURD(authURD);
@ -346,10 +318,10 @@ public class DatasourceService {
Map<String, Object> param = new HashMap<>();
param.put("id", id);
param.put("name", datasource.getName());
String content = "数据源【" + datasource.getName() + "】无效";
DeMsgutil.sendMsg(userId, typeId, 1L, content, gson.toJson(param));
});
}

@ -4,8 +4,6 @@ import com.ipsos.base.domain.Datasource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Author: wangjiahao
* Date: 2021-05-18
@ -17,6 +15,4 @@ public class DatasourceDTO extends Datasource {
@ApiModelProperty("权限")
private String privileges;
private List<String> tables;
}

@ -1,6 +1,6 @@
package com.ipsos.plugins.loader;
import com.ipsos.common.annotation.PluginResultMap;
import com.ipsos.plugins.common.annotation.PluginResultMap;
import com.ipsos.plugins.config.SpringContextUtil;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;

@ -1,9 +1,9 @@
package com.ipsos.plugins.server;
import com.ipsos.commons.utils.ServletUtils;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.common.service.PluginComponentService;
import com.ipsos.common.service.PluginMenuService;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.service.PluginComponentService;
import com.ipsos.plugins.common.service.PluginMenuService;
import com.ipsos.plugins.config.SpringContextUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@ -3,7 +3,7 @@ package com.ipsos.plugins.server;
import com.ipsos.controller.sys.response.DeptNodeResponse;
import com.ipsos.commons.utils.BeanUtils;
import com.ipsos.common.entity.XpackGridRequest;
import com.ipsos.plugins.common.entity.XpackGridRequest;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.dept.dto.request.XpackCreateDept;
import com.ipsos.plugins.xpack.dept.dto.request.XpackDeleteDept;

@ -1,7 +1,7 @@
package com.ipsos.plugins.server;
import com.ipsos.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.display.dto.response.SysSettingDto;
import com.ipsos.plugins.xpack.ldap.dto.response.LdapInfo;

@ -5,7 +5,7 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ipsos.commons.utils.PageUtils;
import com.ipsos.commons.utils.Pager;
import com.ipsos.common.entity.XpackGridRequest;
import com.ipsos.plugins.common.entity.XpackGridRequest;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.role.dto.response.XpackRoleDto;
import com.ipsos.plugins.xpack.role.dto.response.XpackRoleItemDto;

@ -3,8 +3,8 @@ package com.ipsos.plugins.util;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.commons.license.DefaultLicenseService;
import com.ipsos.commons.license.F2CLicenseResponse;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.common.service.PluginMenuService;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.service.PluginMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@ -7,7 +7,6 @@ import com.ipsos.datasource.dto.JdbcConfiguration;
import com.ipsos.dto.chart.ChartCustomFilterDTO;
import com.ipsos.dto.chart.ChartViewFieldDTO;
import com.ipsos.dto.sqlObj.SQLObj;
import com.ipsos.provider.mysql.MySQLConstants;
import com.ipsos.provider.pg.PgConstants;
import com.ipsos.base.domain.DatasetTableField;
@ -23,8 +22,6 @@ public abstract class QueryProvider {
public abstract String createSQLPreview(String sql, String orderBy);
public abstract String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit);
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds);
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup);

@ -101,12 +101,7 @@ public class CKQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + offset + "," + limit;
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 0,1000";
}
@Override

@ -73,12 +73,7 @@ public class DorisQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT " + offset + "," + limit;
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
}
@Override

@ -105,12 +105,7 @@ public class EsQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + limit;
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 1000";
}
@Override

@ -73,12 +73,7 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + offset + "," + limit;
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 0,1000";
}
@Override
@ -88,7 +83,6 @@ public class MysqlQueryProvider extends QueryProvider {
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
.build();
List<SQLObj> xFields = new ArrayList<>();
String groupBySum = "";
if (CollectionUtils.isNotEmpty(fields)) {
for (int i = 0; i < fields.size(); i++) {
DatasetTableField f = fields.get(i);
@ -96,13 +90,6 @@ public class MysqlQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(f.getOriginName(), tableObj);
if (originField.substring(0,3).toLowerCase().equals("sum")) {
String[] originFields = originField.split("\\|");
if (originFields.length > 1) {
originField = originFields[0];
groupBySum = originFields[1];
}
}
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
originField = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
} else {
@ -149,7 +136,6 @@ public class MysqlQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
if (StringUtils.isNotEmpty(groupBySum)) st_sql.add("groupBy", groupBySum);
return st_sql.render();
}
@ -231,7 +217,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias, table));
yFields.add(getYFields(y, originField, fieldAlias));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -423,7 +409,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias, table));
yFields.add(getYFields(y, originField, fieldAlias));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -537,7 +523,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias, table));
yFields.add(getYFields(y, originField, fieldAlias));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -624,7 +610,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias, table));
yFields.add(getYFields(y, originField, fieldAlias));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -985,7 +971,7 @@ public class MysqlQueryProvider extends QueryProvider {
return list;
}
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias, String tableName) {
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) {
String fieldName = "";
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = MySQLConstants.AGG_COUNT;
@ -996,8 +982,6 @@ public class MysqlQueryProvider extends QueryProvider {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
String agg = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
fieldName = String.format(MySQLConstants.CAST, agg, MySQLConstants.DEFAULT_FLOAT_FORMAT);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "ratio")) {
fieldName = "sum(" + originField + ")/(SELECT sum(" + y.getOriginName() + ") FROM " + tableName + ")*100";
} else {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
@ -1008,9 +992,6 @@ public class MysqlQueryProvider extends QueryProvider {
.fieldAlias(fieldAlias)
.build();
}
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) {
return this.getYFields(y, originField, fieldAlias, null);
}
private List<SQLObj> getYWheres(ChartViewFieldDTO y, String originField, String fieldAlias) {
List<SQLObj> list = new ArrayList<>();

@ -88,12 +88,7 @@ public class OracleQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= " + limit;
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= 1000";
}
@Override

@ -93,12 +93,7 @@ public class PgQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + limit + " offset " + offset;
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 1000 offset 0";
}
@Override

@ -81,12 +81,7 @@ public class SqlserverQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT top " + limit + " * FROM (" + sqlFix(sql) + ") AS tmp";
return "SELECT top 1000 * FROM (" + sqlFix(sql) + ") AS tmp";
}
@Override

@ -197,11 +197,6 @@ public class ChartViewService {
}.getType());
yAxis.addAll(yAxisExt);
}
if (StringUtils.equalsIgnoreCase(view.getType(), "table-normal")) {
List<ChartViewFieldDTO> yAxisExt = new Gson().fromJson(view.getYAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
xAxis.addAll(yAxisExt);
}
List<ChartViewFieldDTO> extStack = new Gson().fromJson(view.getExtStack(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
List<ChartViewFieldDTO> extBubble = new Gson().fromJson(view.getExtBubble(), new TypeToken<List<ChartViewFieldDTO>>() {

@ -1,7 +1,6 @@
package com.ipsos.service.sys;
import com.ipsos.auth.api.dto.CurrentUserDto;
import com.ipsos.common.entity.XpackLdapUserEntity;
import com.ipsos.controller.sys.base.BaseGridRequest;
import com.ipsos.controller.sys.request.LdapAddRequest;
import com.ipsos.controller.sys.request.SysUserCreateRequest;
@ -22,6 +21,7 @@ import com.ipsos.commons.utils.AuthUtils;
import com.ipsos.commons.utils.BeanUtils;
import com.ipsos.commons.utils.CodingUtil;
import com.ipsos.i18n.Translator;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.xpack.oidc.dto.SSOUserInfo;
import org.apache.commons.collections4.CollectionUtils;

@ -1,7 +1,7 @@
spring.application.name=ipsos
spring.application.name=dataease
server.port=8081
#spring.aop.proxy-target-class=true
# Hikari
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=5
@ -36,9 +36,7 @@ knife4j.setting.enableAfterScript=false
app.version=@project.version@
logging.file.path=conf/logs/${spring.application.name}
logging.file.path=/opt/smartbi/logs/${spring.application.name}
# view
spring.resources.static-locations=classpath:/templates/,classpath:/static/
@ -75,7 +73,8 @@ spring.cache.ehcache.config=classpath:/ehcache/ehcache.xml
#logging.level.org.springframework.boot.web=trace
#spring.mvc.log-request-details=true
pagehelper.PageRowBounds=true
#excel等用户上传文件路径
upload.file.path=/opt/smartbi/data/kettle/
dataease.sqlinjection.whitelists=/dataset/table/sqlPreview,/dataset/table/update

@ -71,7 +71,7 @@ CREATE TABLE `sys_msg_setting` (
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='';
BEGIN;
INSERT INTO `sys_menu` VALUES (53, 1, 3, 1, '', 'sys-msg-web', 'msg/index', 1000, 'all-msg', 'system-msg-web', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (53, 1, 3, 1, '', 'sys-msg-web', 'msg/index', 1000, 'all-msg', 'system-msg-web', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (54, 53, 0, 1, '', 'sys-msg-web-all', 'msg/all', 1, 'web-msg', 'all', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (55, 53, 0, 1, '', 'sys-msg-web-unread', 'msg/unread', 2, 'unread-msg', 'unread', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (56, 53, 0, 1, '', 'sys-msg-web-readed', 'msg/readed', 3, 'readed-msg', 'readed', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);

@ -1,4 +1,4 @@
INSERT INTO `sys_menu` VALUES (58, 1, 0, 1, 'i18n_timed_task', 'sys-task-dataset', 'system/task/dataset', 1001, 'task', 'dataset', b'0', b'0', b'1', 'task:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (58, 1, 0, 1, 'i18n_timed_task', 'sys-task-dataset', 'system/task/dataset', 1001, 'task', 'dataset', b'0', b'0', b'0', 'task:read', NULL, NULL, NULL, NULL);
ALTER TABLE `dataset_table_task`
ADD COLUMN `last_exec_time` BIGINT(13) NULL DEFAULT NULL COMMENT '' AFTER `create_time`,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -8,27 +8,27 @@ COMMIT;
BEGIN;
INSERT INTO `sys_menu` VALUES (1, 0, 3, 0, '', 'system', 'Layout', 6, 'system', '/system', NULL, b'0', b'0', 'dir:sys', NULL, NULL, NULL, 1614916695777);
INSERT INTO `sys_menu` VALUES (2, 1, 4, 1, '', 'system-user', 'system/user/index', 1, 'peoples', 'user', NULL, b'0', b'0', 'user:read', NULL, NULL, NULL, 1620281952752);
INSERT INTO `sys_menu` VALUES (8, 0, 0, 1, '', 'dataset', 'dataset/index', 2, '', '/dataset', NULL, b'0', b'0', 'data:read', NULL, NULL, NULL, 1614916684821);
INSERT INTO `sys_menu` VALUES (10, 0, 0, 1, '', 'view', 'chart/index', 3, '', '/chart', NULL, b'0', b'0', 'chart:read', NULL, NULL, NULL, 1614915491036);
INSERT INTO `sys_menu` VALUES (8, 0, 0, 1, '', 'dataset', 'dataset/index', 3, '', '/dataset', NULL, b'0', b'0', 'data:read', NULL, NULL, NULL, 1614916684821);
INSERT INTO `sys_menu` VALUES (10, 0, 0, 1, '', 'view', 'chart/index', 2, '', '/chart', NULL, b'0', b'0', 'chart:read', NULL, NULL, NULL, 1614915491036);
INSERT INTO `sys_menu` VALUES (15, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:add', NULL, NULL, 1614930862373, 1614930862373);
INSERT INTO `sys_menu` VALUES (16, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:del', NULL, NULL, 1614930903502, 1614930903502);
INSERT INTO `sys_menu` VALUES (17, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:edit', NULL, NULL, 1614930935529, 1614930935529);
INSERT INTO `sys_menu` VALUES (24, 34, 0, 2, '', NULL, NULL, 997, NULL, NULL, b'0', b'0', b'0', 'datasource:add', NULL, NULL, 1614931168956, 1615783705537);
INSERT INTO `sys_menu` VALUES (28, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:editPwd', NULL, NULL, 1615275128262, 1615275128262);
INSERT INTO `sys_menu` VALUES (30, 0, 0, 1, 'Dashboard', 'panel', 'panel/index', 4, NULL, '/panel', b'0', b'0', b'0', NULL, NULL, NULL, NULL, 1619081449067);
INSERT INTO `sys_menu` VALUES (34, 0, 4, 1, '', 'datasource', 'system/datasource/index', 1, NULL, '/datasource', b'0', b'0', b'0', 'datasource:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (30, 0, 0, 1, 'Dashboard', 'panel', 'panel/index', 1, NULL, '/panel', b'0', b'0', b'0', NULL, NULL, NULL, NULL, 1619081449067);
INSERT INTO `sys_menu` VALUES (34, 0, 4, 1, '', 'datasource', 'system/datasource/index', 4, NULL, '/datasource', b'0', b'0', b'0', 'datasource:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (35, 1, 0, 1, '', 'system-user-form', 'system/user/form', 10, '', 'user-form', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (39, 0, 0, 1, '', 'datasource-form', 'system/datasource/form', 5, NULL, '/ds-form', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (40, 1, 0, 1, '', 'system-template', 'panel/template/index', 13, 'dashboard', 'panel/template/index', NULL, b'0', b'1', 'template:read', NULL, NULL, NULL, 1620444227389);
INSERT INTO `sys_menu` VALUES (40, 1, 0, 1, '', 'system-template', 'panel/template/index', 13, 'dashboard', 'panel/template/index', NULL, b'0', b'0', 'template:read', NULL, NULL, NULL, 1620444227389);
INSERT INTO `sys_menu` VALUES (50, 0, 0, 1, '', 'person-info', 'system/user/privateForm', 999, NULL, '/person-info', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (51, 0, 0, 1, '', 'person-pwd-reset', 'system/user/personPwd', 999, NULL, '/person-pwd', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (52, 0, 0, 1, '', 'about', 'system/about/index', 16, 'system', '/about', b'0', b'0', b'1', NULL, NULL, NULL, NULL, 1620897406691);
COMMIT;
BEGIN;
INSERT INTO `sys_user` VALUES (1, 0, 'admin', '', '男', NULL, 'admin@163com', '1ea361fd39b4c387a63b7c4d787845a3', b'1', 1, NULL, NULL, NULL, NULL, 1615184951534, 'zh_CN');
INSERT INTO `sys_user` VALUES (2, 1, 'demo', 'demo', '男', NULL, 'demo@163.com', '1ea361fd39b4c387a63b7c4d787845a3', b'0', 1, NULL, NULL, NULL, NULL, 1622533509697, 'zh_CN');
INSERT INTO `sys_user` VALUES (1, 0, 'admin', '', '男', NULL, 'admin@163com', '40b8893ea9ebc2d631c4bb42bb1e8996', b'1', 1, NULL, NULL, NULL, NULL, 1615184951534, 'zh_CN');
INSERT INTO `sys_user` VALUES (2, 1, 'demo', 'demo', '男', NULL, 'demo@163.com', '40b8893ea9ebc2d631c4bb42bb1e8996', b'0', 1, NULL, NULL, NULL, 1619086036234, 1622533509697, 'zh_CN');
COMMIT;

File diff suppressed because one or more lines are too long

@ -7,8 +7,7 @@
user.dir - 用户当前工作目录
java.io.tmpdir - 默认临时文件路径
-->
<diskStore path="conf/data/ehcache"/>
<diskStore path="/home/mispower/opt/dataease/data/ehcache"/>
<!--
name:缓存名称。
maxElementsInMemory:jvm缓存最大数目
@ -140,4 +139,4 @@
/>
</ehcache>
</ehcache>

@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!--配置数据库连接的位置-->
<properties url="file://conf/ipsos.properties"/>
<properties url="file://conf/smartbi.properties"/>
<!-- 设置mysql驱动路径 -->
<!--<classPathEntry location="/Users/liuruibin/.m2/repository/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar"/>-->
<!-- 此处指定生成针对MyBatis3的DAO -->

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<property resource="application.properties"/>
<property file="conf/ipsos.properties"/>
<property file="conf/smartbi.properties"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %5p %40.40c:%4L - %m%n</pattern>

@ -28,7 +28,7 @@ ORDER BY
>>
previewSql(groups, aggregators, filters, orders, table, isGroup, groupBy)
previewSql(groups, aggregators, filters, orders, table, isGroup)
::=<<
SELECT
<if(!groups && !aggregators)>
@ -51,9 +51,6 @@ WHERE
GROUP BY
<groups:{group|<if(group)><group.fieldName><endif>}; separator=",\n">
<endif>
<if(groupBy)>
<groupBy>
<endif>
<if(orders)>
ORDER BY
<orders:{order|<if(order)><order.orderAlias> <order.orderDirection><endif>}; separator=",\n">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120101,"name":"和平区","center":[117.195907,39.118327],"centroid":[117.196207,39.118993],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.222506,39.117484],[117.222299,39.117706],[117.219749,39.11979],[117.217625,39.121933],[117.215465,39.124525],[117.21414,39.126429],[117.21362,39.128244],[117.213457,39.130464],[117.213257,39.132029],[117.212797,39.132888],[117.211853,39.13348],[117.211038,39.133673],[117.208454,39.133394],[117.206452,39.132798],[117.202482,39.130902],[117.200039,39.130451],[117.198956,39.1305],[117.198194,39.13081],[117.196989,39.131463],[117.196034,39.132246],[117.194762,39.133612],[117.194206,39.134669],[117.193748,39.13457],[117.193202,39.134467],[117.192316,39.134329],[117.19224,39.134377],[117.19205,39.135337],[117.191868,39.135871],[117.191634,39.136081],[117.191442,39.13615],[117.190395,39.136283],[117.190395,39.136737],[117.190355,39.136844],[117.184923,39.136998],[117.181168,39.13709],[117.181003,39.133829],[117.180872,39.132361],[117.180681,39.130134],[117.180491,39.127971],[117.180301,39.126091],[117.180222,39.125279],[117.180014,39.123282],[117.179953,39.122756],[117.179901,39.122444],[117.179806,39.121257],[117.179744,39.119716],[117.179676,39.117129],[117.179659,39.114404],[117.179546,39.110206],[117.179535,39.109498],[117.179422,39.104469],[117.179292,39.10199],[117.179846,39.101975],[117.180722,39.101857],[117.181527,39.101777],[117.182402,39.101671],[117.184603,39.101654],[117.185314,39.101527],[117.186535,39.101294],[117.187956,39.101044],[117.188804,39.100943],[117.190052,39.100954],[117.190842,39.101021],[117.191568,39.101099],[117.194109,39.101441],[117.194645,39.101488],[117.195295,39.10153],[117.196291,39.101576],[117.196595,39.101624],[117.196508,39.101832],[117.19637,39.102053],[117.196187,39.102198],[117.196319,39.102307],[117.197413,39.102917],[117.197651,39.103116],[117.198189,39.103349],[117.198756,39.103794],[117.198784,39.103791],[117.199144,39.104065],[117.199147,39.104101],[117.200182,39.104914],[117.201491,39.105502],[117.202341,39.106439],[117.202991,39.107033],[117.204364,39.107998],[117.205739,39.108917],[117.207065,39.10918],[117.207619,39.109258],[117.208114,39.109374],[117.209631,39.110284],[117.210588,39.110914],[117.210756,39.110994],[117.211382,39.111424],[117.212423,39.111813],[117.213072,39.11199],[117.213118,39.11204],[117.213185,39.112207],[117.213264,39.112711],[117.213255,39.1131],[117.213273,39.113643],[117.213297,39.113694],[117.213568,39.113866],[117.215014,39.114402],[117.215803,39.114652],[117.216688,39.114779],[117.218171,39.115479],[117.219024,39.115862],[117.219893,39.116287],[117.22111,39.116822],[117.221674,39.117116],[117.222506,39.117484]]]]}}]}

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120102,"name":"河东区","center":[117.226568,39.122125],"centroid":[117.256682,39.122406],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.260629,39.159009],[117.259942,39.158922],[117.259005,39.158866],[117.258248,39.158782],[117.256095,39.15867],[117.254071,39.158491],[117.253333,39.158409],[117.252543,39.158409],[117.251449,39.158309],[117.250668,39.158254],[117.249209,39.158229],[117.248723,39.158397],[117.248793,39.157894],[117.248784,39.15771],[117.248982,39.155509],[117.249286,39.154272],[117.249572,39.152134],[117.249928,39.149546],[117.249195,39.149575],[117.248607,39.149578],[117.243521,39.1497],[117.240797,39.149979],[117.234888,39.149905],[117.229545,39.149832],[117.229145,39.149784],[117.228772,39.14968],[117.228365,39.149519],[117.220923,39.144813],[117.21631,39.149808],[117.215218,39.151407],[117.215339,39.150508],[117.215312,39.14997],[117.21521,39.14951],[117.215072,39.149262],[117.214741,39.148786],[117.214221,39.148318],[117.213648,39.14797],[117.211759,39.147275],[117.207832,39.145906],[117.206402,39.145349],[117.205743,39.144917],[117.204989,39.144225],[117.204625,39.143648],[117.203845,39.142126],[117.20355,39.141284],[117.203515,39.140685],[117.20362,39.140155],[117.203896,39.139522],[117.204208,39.139229],[117.206227,39.137593],[117.207709,39.136895],[117.211107,39.135673],[117.210275,39.134233],[117.209998,39.133913],[117.209773,39.133536],[117.211038,39.133673],[117.211852,39.13348],[117.212797,39.132887],[117.213257,39.132028],[117.213456,39.130464],[117.213621,39.128244],[117.214141,39.126429],[117.215465,39.124525],[117.217625,39.121933],[117.219749,39.11979],[117.222299,39.117706],[117.22457,39.115306],[117.227606,39.111742],[117.230397,39.108344],[117.241347,39.09861],[117.242075,39.097478],[117.243454,39.093065],[117.245023,39.089246],[117.24604,39.087921],[117.246518,39.087499],[117.248558,39.086222],[117.252819,39.084064],[117.257067,39.082104],[117.260148,39.080914],[117.265491,39.079926],[117.266977,39.079796],[117.266865,39.080504],[117.266917,39.08103],[117.267108,39.082536],[117.267361,39.084209],[117.267873,39.08529],[117.269307,39.086807],[117.271176,39.088962],[117.272332,39.09053],[117.274235,39.088794],[117.275339,39.089929],[117.276339,39.090772],[117.27799,39.090707],[117.278843,39.090591],[117.278782,39.08938],[117.278843,39.088163],[117.279878,39.088542],[117.279945,39.086884],[117.285023,39.087132],[117.286093,39.087154],[117.286137,39.087525],[117.286268,39.089092],[117.28658,39.089072],[117.292922,39.087651],[117.298183,39.086475],[117.297183,39.083746],[117.298261,39.083438],[117.297991,39.082671],[117.298401,39.082548],[117.30011,39.082114],[117.301949,39.086269],[117.304819,39.085572],[117.306128,39.087938],[117.306911,39.089376],[117.307634,39.092087],[117.306907,39.092241],[117.306847,39.092418],[117.30808,39.096358],[117.306512,39.09666],[117.306459,39.097831],[117.309654,39.100946],[117.302911,39.102564],[117.294688,39.104116],[117.275914,39.108052],[117.27582,39.108069],[117.27523,39.108951],[117.274403,39.111291],[117.273953,39.112606],[117.272762,39.116906],[117.272336,39.117965],[117.271866,39.119498],[117.271276,39.121515],[117.269869,39.126367],[117.269939,39.127109],[117.270294,39.127857],[117.271103,39.128833],[117.271762,39.129324],[117.27624,39.12981],[117.281317,39.130449],[117.283326,39.130889],[117.286647,39.13174],[117.279937,39.147354],[117.284907,39.148224],[117.293404,39.15062],[117.290831,39.155546],[117.290315,39.157142],[117.287398,39.158474],[117.281389,39.160737],[117.27684,39.162999],[117.27242,39.161728],[117.271211,39.161345],[117.267301,39.160431],[117.264599,39.159687],[117.262382,39.159096],[117.261654,39.159018],[117.260629,39.159009]]]]}}]}

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120103,"name":"河西区","center":[117.217536,39.101897],"centroid":[117.232522,39.072613],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.26729,39.039449],[117.267069,39.03996],[117.266953,39.040048],[117.266505,39.041231],[117.269791,39.041989],[117.272479,39.042778],[117.272532,39.042953],[117.272261,39.043423],[117.270475,39.044921],[117.268985,39.047166],[117.267691,39.050364],[117.278046,39.05354],[117.279183,39.051464],[117.280462,39.048924],[117.286822,39.051028],[117.284402,39.055491],[117.283094,39.058995],[117.280571,39.058304],[117.280475,39.059302],[117.282943,39.059446],[117.285537,39.059778],[117.288004,39.060122],[117.288473,39.0602],[117.287952,39.062467],[117.287621,39.063826],[117.2871,39.066071],[117.286543,39.067156],[117.285891,39.06894],[117.285839,39.069735],[117.285995,39.070468],[117.286205,39.07076],[117.286674,39.071286],[117.288701,39.072478],[117.292076,39.075414],[117.292423,39.07587],[117.29245,39.077424],[117.284945,39.077747],[117.277807,39.078765],[117.274304,39.07935],[117.267986,39.079705],[117.265492,39.079926],[117.260149,39.080914],[117.257067,39.082104],[117.25282,39.084064],[117.248557,39.086223],[117.246518,39.0875],[117.24604,39.087921],[117.245023,39.089246],[117.243454,39.093064],[117.242074,39.097477],[117.241346,39.098611],[117.230398,39.108343],[117.227605,39.111742],[117.224571,39.115306],[117.222506,39.117484],[117.221674,39.117117],[117.22111,39.116822],[117.219892,39.116287],[117.219024,39.115861],[117.218171,39.115478],[117.216687,39.114778],[117.215804,39.114652],[117.215013,39.114402],[117.213568,39.113866],[117.213273,39.113643],[117.213264,39.112711],[117.213184,39.112207],[117.213072,39.11199],[117.212422,39.111813],[117.211382,39.111424],[117.210756,39.110994],[117.210588,39.110914],[117.209631,39.110284],[117.208114,39.109373],[117.207618,39.109258],[117.207065,39.10918],[117.205738,39.108917],[117.204364,39.107998],[117.202991,39.107033],[117.202341,39.106439],[117.201491,39.105502],[117.200182,39.104914],[117.199147,39.104101],[117.199145,39.104065],[117.198756,39.103794],[117.198189,39.103349],[117.19765,39.103116],[117.197413,39.102918],[117.196318,39.102307],[117.196188,39.102198],[117.196369,39.102054],[117.196595,39.101623],[117.196291,39.101576],[117.195295,39.10153],[117.194108,39.10144],[117.191568,39.101099],[117.190842,39.101021],[117.190051,39.100953],[117.188804,39.100943],[117.187956,39.101044],[117.186535,39.101293],[117.185314,39.101527],[117.184603,39.101654],[117.182402,39.101671],[117.181528,39.101777],[117.180722,39.101857],[117.179845,39.101975],[117.179292,39.10199],[117.179248,39.10103],[117.179232,39.09918],[117.17923,39.098012],[117.179213,39.097483],[117.179065,39.097291],[117.179082,39.09605],[117.17911,39.095324],[117.179239,39.094067],[117.179334,39.09326],[117.179394,39.092613],[117.179463,39.092096],[117.179688,39.089798],[117.179723,39.089329],[117.17993,39.088048],[117.18019,39.086771],[117.180658,39.084751],[117.181082,39.083112],[117.181541,39.081277],[117.18213,39.078706],[117.182452,39.077016],[117.182728,39.075623],[117.183066,39.074205],[117.183465,39.072876],[117.18382,39.072002],[117.184096,39.07148],[117.184451,39.070993],[117.185456,39.069719],[117.185863,39.069314],[117.187007,39.068465],[117.187491,39.067999],[117.187864,39.067682],[117.188532,39.066925],[117.189005,39.067091],[117.192075,39.068052],[117.196286,39.069329],[117.203879,39.071719],[117.204902,39.07057],[117.208524,39.066513],[117.212477,39.062056],[117.214145,39.060193],[117.213847,39.06007],[117.213334,39.059961],[117.212746,39.06002],[117.211884,39.060401],[117.21158,39.060472],[117.211352,39.060467],[117.211204,39.060356],[117.211172,39.060245],[117.211152,39.05842],[117.211184,39.058155],[117.211444,39.057766],[117.211747,39.057592],[117.212668,39.057234],[117.213089,39.057137],[117.215178,39.057181],[117.216943,39.057065],[117.217713,39.056218],[117.217784,39.053223],[117.217725,39.034319],[117.218849,39.034103],[117.221346,39.033657],[117.222965,39.033469],[117.229496,39.03307],[117.232907,39.033152],[117.233742,39.033259],[117.234043,39.033194],[117.234148,39.033362],[117.234228,39.033205],[117.23457,39.03337],[117.243159,39.034847],[117.250115,39.036267],[117.251907,39.036993],[117.253,39.037226],[117.2542,39.03716],[117.259906,39.038062],[117.26729,39.039449]]]]}}]}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120105,"name":"河北区","center":[117.201569,39.156632],"centroid":[117.213791,39.167182],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.233479,39.193053],[117.23228,39.192072],[117.229662,39.18999],[117.224709,39.185531],[117.22398,39.184968],[117.223234,39.185771],[117.221941,39.184696],[117.219982,39.186448],[117.216116,39.191282],[117.213809,39.189857],[117.212702,39.190727],[117.211886,39.191553],[117.211827,39.191717],[117.211723,39.191754],[117.21077,39.192926],[117.210712,39.192959],[117.209953,39.192613],[117.206701,39.190881],[117.204246,39.189603],[117.203495,39.189196],[117.202718,39.188822],[117.199953,39.187383],[117.199165,39.18694],[117.197264,39.186103],[117.191919,39.191924],[117.18996,39.190838],[117.1886,39.190234],[117.183739,39.189147],[117.183512,39.189103],[117.182656,39.190352],[117.181772,39.190328],[117.180478,39.189418],[117.180482,39.189301],[117.1812,39.188383],[117.179528,39.187974],[117.17712,39.187427],[117.17368,39.186699],[117.171782,39.186309],[117.169789,39.185803],[117.169373,39.185665],[117.168905,39.185427],[117.168636,39.185172],[117.168056,39.184512],[117.167553,39.184001],[117.170248,39.182381],[117.171149,39.181823],[117.172093,39.181508],[117.173081,39.181423],[117.176009,39.181957],[117.176773,39.182074],[117.177223,39.182042],[117.177664,39.181954],[117.178063,39.181671],[117.17848,39.180948],[117.178738,39.179954],[117.178808,39.178512],[117.178677,39.176858],[117.178304,39.174236],[117.178408,39.173388],[117.178633,39.172575],[117.179785,39.170172],[117.179941,39.169707],[117.180028,39.169182],[117.180044,39.168413],[117.179603,39.167293],[117.178842,39.1666],[117.177168,39.165616],[117.176129,39.165024],[117.175825,39.164768],[117.175721,39.164374],[117.175903,39.163622],[117.176622,39.162574],[117.177176,39.162056],[117.178893,39.160924],[117.18195,39.15909],[117.18492,39.156656],[117.186481,39.155099],[117.189167,39.151941],[117.190466,39.150332],[117.193082,39.148381],[117.193836,39.147643],[117.194442,39.146993],[117.194737,39.146454],[117.194928,39.145199],[117.194356,39.140028],[117.194008,39.136441],[117.194008,39.135251],[117.194207,39.134669],[117.194761,39.133612],[117.196035,39.132246],[117.19699,39.131463],[117.198193,39.13081],[117.198956,39.1305],[117.200039,39.130451],[117.202482,39.130902],[117.206452,39.132798],[117.208455,39.133394],[117.209773,39.133536],[117.209998,39.133914],[117.210275,39.134234],[117.211107,39.135673],[117.207708,39.136896],[117.206226,39.137593],[117.204209,39.139229],[117.203896,39.139522],[117.203619,39.140155],[117.203515,39.140685],[117.20355,39.141284],[117.203845,39.142126],[117.204626,39.143648],[117.204989,39.144226],[117.205742,39.144916],[117.206402,39.145349],[117.207832,39.145907],[117.211759,39.147274],[117.213648,39.14797],[117.214221,39.148318],[117.214741,39.148785],[117.215072,39.149262],[117.215209,39.14951],[117.215313,39.14997],[117.21534,39.150508],[117.215218,39.151408],[117.21631,39.149808],[117.220922,39.144812],[117.221189,39.144979],[117.228365,39.14952],[117.228772,39.14968],[117.229145,39.149784],[117.229545,39.149832],[117.234887,39.149905],[117.240796,39.149979],[117.243521,39.149699],[117.248607,39.149578],[117.249194,39.149575],[117.249928,39.149546],[117.249572,39.152134],[117.249285,39.154271],[117.248983,39.155509],[117.248784,39.15771],[117.248793,39.157894],[117.248723,39.158397],[117.249209,39.158228],[117.250669,39.158253],[117.251449,39.15831],[117.252543,39.158409],[117.253333,39.158409],[117.25407,39.158492],[117.256094,39.15867],[117.258248,39.158783],[117.259004,39.158866],[117.259942,39.158922],[117.260629,39.159009],[117.260456,39.163268],[117.260534,39.167551],[117.260421,39.16809],[117.260266,39.168398],[117.260056,39.168711],[117.258658,39.169958],[117.256905,39.169032],[117.2564,39.168597],[117.25606,39.16825],[117.255439,39.168163],[117.255029,39.16814],[117.253907,39.168111],[117.251703,39.168094],[117.251059,39.169649],[117.250782,39.170908],[117.246736,39.170414],[117.246519,39.171378],[117.242111,39.170925],[117.240956,39.170751],[117.241841,39.17129],[117.242699,39.171914],[117.243691,39.172739],[117.245184,39.17418],[117.247553,39.176452],[117.249966,39.178452],[117.249616,39.178696],[117.249352,39.178819],[117.24829,39.179612],[117.247268,39.180572],[117.24586,39.181871],[117.244932,39.182763],[117.244621,39.183106],[117.244481,39.183196],[117.242927,39.184603],[117.241616,39.18577],[117.240353,39.186874],[117.239597,39.187429],[117.238136,39.188721],[117.237044,39.189841],[117.235075,39.191679],[117.233862,39.192696],[117.233479,39.193053]]]]}}]}

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120106,"name":"红桥区","center":[117.163301,39.175066],"centroid":[117.155648,39.164723],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.194442,39.146993],[117.193836,39.147643],[117.193082,39.148381],[117.190466,39.150332],[117.189166,39.151941],[117.186481,39.155099],[117.18492,39.156656],[117.18195,39.15909],[117.178893,39.160924],[117.177176,39.162056],[117.176622,39.162574],[117.175903,39.163622],[117.17572,39.164374],[117.175825,39.164768],[117.17613,39.165024],[117.177168,39.165616],[117.178842,39.1666],[117.179603,39.167293],[117.180044,39.168414],[117.180028,39.169182],[117.179941,39.169707],[117.179785,39.170172],[117.178634,39.172575],[117.178408,39.173389],[117.178303,39.174236],[117.178676,39.176858],[117.178808,39.178512],[117.178738,39.179954],[117.17848,39.180948],[117.178063,39.181671],[117.177664,39.181954],[117.177223,39.182042],[117.176772,39.182073],[117.176009,39.181957],[117.173082,39.181424],[117.172093,39.181508],[117.171149,39.181823],[117.170247,39.182381],[117.167553,39.184001],[117.167077,39.184249],[117.163931,39.185753],[117.162571,39.186694],[117.161948,39.187277],[117.161601,39.187773],[117.161106,39.189428],[117.160657,39.189989],[117.16004,39.190237],[117.159296,39.190348],[117.154963,39.189951],[117.148566,39.189097],[117.147743,39.189068],[117.146867,39.189156],[117.146051,39.189357],[117.145489,39.189623],[117.145124,39.189984],[117.144786,39.190401],[117.144024,39.191901],[117.143252,39.191676],[117.142316,39.19136],[117.141762,39.191126],[117.139247,39.18961],[117.138015,39.188573],[117.136775,39.187824],[117.136057,39.18718],[117.135815,39.187022],[117.135231,39.186462],[117.134311,39.185351],[117.133228,39.183216],[117.131135,39.178866],[117.130807,39.178016],[117.130633,39.177374],[117.130503,39.176692],[117.130451,39.175536],[117.130365,39.173951],[117.129895,39.171906],[117.129652,39.171038],[117.129392,39.170165],[117.129157,39.169435],[117.128905,39.168585],[117.128612,39.167398],[117.127892,39.164654],[117.127413,39.162962],[117.127213,39.162168],[117.12698,39.161325],[117.126667,39.160395],[117.126433,39.159458],[117.126318,39.158924],[117.126285,39.158273],[117.126433,39.157812],[117.126658,39.156891],[117.126865,39.156123],[117.127239,39.154889],[117.127594,39.154107],[117.127941,39.153169],[117.128279,39.152526],[117.128479,39.152243],[117.128965,39.152294],[117.129797,39.152086],[117.130673,39.151476],[117.131541,39.150494],[117.133648,39.147942],[117.134273,39.147338],[117.134984,39.146915],[117.135807,39.146642],[117.136761,39.146467],[117.140022,39.147105],[117.142909,39.148066],[117.14376,39.148316],[117.144321,39.148577],[117.145414,39.147697],[117.145537,39.147415],[117.145647,39.146333],[117.145527,39.146081],[117.144729,39.145453],[117.144018,39.144368],[117.144034,39.144173],[117.144122,39.144068],[117.145595,39.144053],[117.147919,39.143364],[117.150545,39.143073],[117.151915,39.142723],[117.152366,39.14257],[117.152626,39.142531],[117.154177,39.142385],[117.155251,39.142314],[117.15617,39.142212],[117.15721,39.142002],[117.15773,39.141554],[117.158023,39.14118],[117.159073,39.141496],[117.159567,39.141577],[117.160234,39.141589],[117.161665,39.141595],[117.165096,39.141663],[117.171836,39.141937],[117.171681,39.146467],[117.174047,39.146319],[117.180619,39.146148],[117.180991,39.146073],[117.181273,39.146132],[117.185538,39.145935],[117.189027,39.145866],[117.189946,39.14589],[117.190587,39.145967],[117.192684,39.146449],[117.193559,39.146661],[117.194442,39.146993]]],[[[117.13036,39.189872],[117.133173,39.191312],[117.133323,39.191036],[117.135416,39.192016],[117.136057,39.192307],[117.135855,39.192685],[117.136416,39.192848],[117.140771,39.193229],[117.1406,39.194444],[117.138788,39.196467],[117.140022,39.19715],[117.140366,39.197325],[117.140805,39.197511],[117.141212,39.197742],[117.139547,39.200147],[117.138644,39.199849],[117.138366,39.200356],[117.138192,39.20103],[117.135909,39.200032],[117.134964,39.201172],[117.133827,39.20266],[117.132851,39.202302],[117.132036,39.203466],[117.125617,39.200879],[117.126304,39.199891],[117.12566,39.1996],[117.128575,39.195657],[117.125945,39.194942],[117.127223,39.193163],[117.127702,39.192706],[117.128705,39.191432],[117.129263,39.190684],[117.130004,39.190102],[117.13036,39.189872]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130102,"name":"长安区","center":[114.548151,38.047501],"centroid":[114.583482,38.080599],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.536771,38.127953],[114.533376,38.129304],[114.529779,38.130409],[114.526714,38.13107],[114.523427,38.131471],[114.522627,38.131659],[114.521273,38.132405],[114.520616,38.132386],[114.518814,38.131541],[114.517501,38.131379],[114.51566,38.131367],[114.512934,38.131608],[114.511321,38.131619],[114.509717,38.131817],[114.507313,38.131759],[114.504809,38.131352],[114.503623,38.130868],[114.48411,38.114064],[114.489056,38.113343],[114.487527,38.112643],[114.486186,38.111775],[114.48578,38.111707],[114.485312,38.106728],[114.485019,38.106623],[114.480867,38.10667],[114.480331,38.106472],[114.480168,38.106238],[114.480202,38.10597],[114.482208,38.102943],[114.489356,38.102366],[114.490826,38.102393],[114.492167,38.102724],[114.495132,38.104546],[114.494882,38.101639],[114.495116,38.101639],[114.494725,38.096923],[114.494932,38.091932],[114.493357,38.082764],[114.502141,38.081578],[114.498717,38.072558],[114.498215,38.07256],[114.494323,38.055938],[114.494521,38.05573],[114.493398,38.049757],[114.492583,38.043611],[114.492735,38.04339],[114.493798,38.043457],[114.498808,38.043314],[114.501255,38.04339],[114.502175,38.043042],[114.502846,38.042843],[114.503207,38.042636],[114.503886,38.042517],[114.503932,38.042437],[114.504847,38.04251],[114.505079,38.042399],[114.50524,38.042556],[114.505999,38.042577],[114.506199,38.042737],[114.506745,38.042758],[114.507301,38.042619],[114.507822,38.042758],[114.507753,38.043003],[114.508262,38.043016],[114.508392,38.042745],[114.509301,38.042652],[114.51031,38.042695],[114.510314,38.042353],[114.510689,38.04215],[114.511825,38.042119],[114.511868,38.035595],[114.517726,38.035701],[114.522865,38.035754],[114.524301,38.035781],[114.526235,38.035855],[114.531931,38.035958],[114.53277,38.035942],[114.535073,38.036017],[114.591154,38.0371],[114.591313,38.055922],[114.591174,38.058887],[114.609944,38.054698],[114.67704,38.041433],[114.676597,38.04236],[114.67622,38.042784],[114.676406,38.046182],[114.678313,38.045975],[114.678928,38.046291],[114.679019,38.051584],[114.679355,38.05158],[114.679274,38.053839],[114.681716,38.059273],[114.683645,38.058276],[114.684138,38.060488],[114.687574,38.060046],[114.687724,38.061481],[114.687683,38.06239],[114.689744,38.064666],[114.691191,38.065332],[114.693047,38.065169],[114.694547,38.063536],[114.695378,38.063386],[114.699366,38.070146],[114.705096,38.078554],[114.707378,38.091356],[114.707253,38.091554],[114.705417,38.091739],[114.705462,38.0939],[114.705117,38.094168],[114.703794,38.094157],[114.703781,38.097203],[114.693852,38.097153],[114.69342,38.102353],[114.680921,38.101245],[114.673173,38.099604],[114.663798,38.10284],[114.656871,38.103098],[114.65334,38.104175],[114.647498,38.105929],[114.641297,38.10807],[114.633958,38.109545],[114.621039,38.110268],[114.611199,38.109227],[114.599986,38.111299],[114.596089,38.113045],[114.592133,38.115598],[114.589925,38.116472],[114.588441,38.116538],[114.582674,38.115735],[114.577319,38.115846],[114.571416,38.116388],[114.566331,38.117653],[114.561623,38.120305],[114.556227,38.121699],[114.550674,38.122497],[114.547463,38.123208],[114.544305,38.124575],[114.541729,38.126044],[114.539781,38.126687],[114.536771,38.127953]]]]}}]}

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130104,"name":"桥西区","center":[114.462931,38.028383],"centroid":[114.449351,38.025685],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.376652,38.073279],[114.377209,38.07012],[114.378591,38.067296],[114.380319,38.065448],[114.381247,38.063486],[114.382845,38.063403],[114.382894,38.062493],[114.385204,38.062215],[114.385347,38.056901],[114.385246,38.056528],[114.384592,38.056534],[114.388193,38.052608],[114.386613,38.052655],[114.386632,38.048601],[114.384258,38.048315],[114.384305,38.045992],[114.38433,38.045884],[114.38628,38.042742],[114.389019,38.041083],[114.392771,38.041056],[114.39332,38.039724],[114.393333,38.038643],[114.397208,38.038449],[114.397645,38.037592],[114.397725,38.036246],[114.398335,38.035864],[114.398421,38.034413],[114.395963,38.027892],[114.395845,38.024808],[114.398187,38.022852],[114.399195,38.02241],[114.402154,38.020863],[114.404275,38.02051],[114.405612,38.020787],[114.407693,38.02156],[114.408686,38.021627],[114.409142,38.021437],[114.409852,38.020665],[114.411035,38.016444],[114.41158,38.015359],[114.412473,38.014605],[114.414956,38.014434],[114.417384,38.014752],[114.419357,38.012109],[114.426236,38.012464],[114.428007,38.011203],[114.428194,38.010035],[114.427846,38.005767],[114.425836,38.00411],[114.425204,38.004074],[114.425981,38.003039],[114.42486,38.002975],[114.424742,38.002643],[114.424913,38.001776],[114.425821,38.00114],[114.425775,37.998899],[114.427485,37.996154],[114.427899,37.996265],[114.427692,37.997502],[114.4286,37.998018],[114.428827,37.995139],[114.431087,37.995117],[114.431559,37.994722],[114.431519,37.992657],[114.432534,37.992645],[114.432486,37.994286],[114.433338,37.994292],[114.434231,37.994515],[114.437906,37.994779],[114.438001,37.993959],[114.451331,37.994549],[114.451483,37.994046],[114.451482,37.992147],[114.459957,37.990827],[114.460498,37.990234],[114.461136,37.98421],[114.462785,37.98428],[114.463343,37.981185],[114.459754,37.979462],[114.455303,37.979447],[114.45549,37.97931],[114.458266,37.979232],[114.458131,37.976926],[114.461788,37.974222],[114.464227,37.974285],[114.468329,37.973975],[114.468668,37.972421],[114.470157,37.972268],[114.472917,37.97238],[114.472273,37.97343],[114.474582,37.973868],[114.474985,37.976623],[114.478645,37.976934],[114.481619,37.976486],[114.482098,37.977205],[114.484768,37.977365],[114.485772,37.975903],[114.490425,37.974015],[114.490082,37.975861],[114.496233,37.976757],[114.492508,37.998656],[114.493175,37.998787],[114.492372,38.001429],[114.492214,38.002106],[114.493825,38.002725],[114.494421,38.003085],[114.495331,38.003979],[114.49808,38.006755],[114.49913,38.007739],[114.500143,38.008779],[114.512256,38.020849],[114.51219,38.021645],[114.512217,38.022298],[114.51211,38.026404],[114.512058,38.027335],[114.512064,38.028252],[114.512119,38.028271],[114.512022,38.029784],[114.511868,38.035595],[114.511825,38.04212],[114.510689,38.04215],[114.510314,38.042353],[114.510309,38.042695],[114.509301,38.042652],[114.508391,38.042745],[114.508263,38.043017],[114.507753,38.043002],[114.507822,38.042757],[114.507303,38.042619],[114.506744,38.042757],[114.506199,38.042738],[114.505999,38.042577],[114.50524,38.042556],[114.505079,38.0424],[114.504643,38.042526],[114.50393,38.042438],[114.503887,38.042518],[114.503206,38.042636],[114.502845,38.042843],[114.502177,38.043043],[114.501255,38.04339],[114.498808,38.043314],[114.493798,38.043457],[114.492736,38.04339],[114.492584,38.043611],[114.490327,38.043459],[114.489045,38.043407],[114.484353,38.043448],[114.484467,38.045014],[114.481007,38.045069],[114.477263,38.044879],[114.477263,38.045663],[114.469547,38.045509],[114.469523,38.047826],[114.469364,38.047896],[114.462083,38.048234],[114.454392,38.048492],[114.454126,38.048537],[114.451399,38.048629],[114.451159,38.048597],[114.44968,38.048688],[114.44885,38.048673],[114.446036,38.048765],[114.439525,38.049077],[114.437997,38.049242],[114.436736,38.049211],[114.435851,38.049253],[114.434839,38.052581],[114.434751,38.053181],[114.434751,38.054266],[114.43489,38.055516],[114.436641,38.063706],[114.432907,38.064631],[114.426511,38.065826],[114.405197,38.069501],[114.397429,38.070835],[114.386512,38.072704],[114.376652,38.073279]]]]}}]}

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130105,"name":"新华区","center":[114.465974,38.067142],"centroid":[114.447636,38.099975],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.492584,38.043611],[114.493398,38.049756],[114.494521,38.05573],[114.494323,38.055938],[114.498215,38.07256],[114.498717,38.072558],[114.502141,38.081577],[114.493357,38.082763],[114.494932,38.091932],[114.494725,38.096923],[114.495115,38.101638],[114.494882,38.101638],[114.495132,38.104546],[114.492166,38.102723],[114.490826,38.102393],[114.489357,38.102367],[114.482207,38.102943],[114.480201,38.105969],[114.480167,38.106237],[114.480331,38.106472],[114.480867,38.10667],[114.485018,38.106623],[114.485311,38.106728],[114.485778,38.111707],[114.486186,38.111776],[114.487526,38.112644],[114.489057,38.113343],[114.48411,38.114064],[114.501874,38.129363],[114.501523,38.129686],[114.502489,38.130335],[114.502079,38.130803],[114.500526,38.131615],[114.500148,38.132459],[114.501236,38.138232],[114.498671,38.14157],[114.497644,38.142002],[114.496072,38.141965],[114.494288,38.141581],[114.494393,38.140739],[114.491167,38.140538],[114.481589,38.142197],[114.482211,38.145144],[114.476834,38.146114],[114.474497,38.145917],[114.463968,38.15264],[114.452959,38.160762],[114.450836,38.164218],[114.448647,38.16647],[114.445688,38.168145],[114.438662,38.162307],[114.433407,38.155783],[114.428076,38.148337],[114.426256,38.146279],[114.424454,38.14712],[114.423288,38.146901],[114.422547,38.141412],[114.418824,38.140981],[114.415276,38.137791],[114.414839,38.136347],[114.414335,38.136119],[114.413751,38.135404],[114.414036,38.131395],[114.412169,38.129511],[114.410157,38.129496],[114.408883,38.126623],[114.409603,38.11769],[114.410434,38.117333],[114.416655,38.117997],[114.417137,38.113599],[114.417608,38.111615],[114.416781,38.110921],[114.416581,38.110119],[114.416312,38.10958],[114.40363,38.108036],[114.40343,38.106527],[114.402622,38.106193],[114.400478,38.105519],[114.398056,38.105319],[114.396719,38.106255],[114.395035,38.106658],[114.387141,38.106548],[114.379167,38.105762],[114.378663,38.104456],[114.378392,38.104017],[114.377994,38.103614],[114.376777,38.103109],[114.375769,38.102808],[114.375333,38.102304],[114.3751,38.101866],[114.375065,38.101128],[114.375369,38.100056],[114.375768,38.099584],[114.376211,38.09942],[114.38192,38.09956],[114.382223,38.099192],[114.382423,38.098754],[114.382562,38.091773],[114.382493,38.090092],[114.382622,38.089711],[114.383197,38.089473],[114.383361,38.089104],[114.383395,38.088132],[114.383162,38.086557],[114.382402,38.085333],[114.382153,38.085076],[114.381753,38.085011],[114.37488,38.085328],[114.374271,38.084988],[114.376018,38.076703],[114.376652,38.073279],[114.386511,38.072704],[114.397429,38.070836],[114.405198,38.0695],[114.426512,38.065826],[114.432907,38.064632],[114.436641,38.063707],[114.434891,38.055516],[114.434751,38.054265],[114.434751,38.053182],[114.434838,38.052581],[114.435851,38.049253],[114.436736,38.049211],[114.437996,38.049242],[114.439526,38.049077],[114.446037,38.048765],[114.44885,38.048673],[114.449679,38.048688],[114.451159,38.048597],[114.4514,38.048629],[114.454126,38.048537],[114.454391,38.048492],[114.462083,38.048235],[114.469364,38.047895],[114.469524,38.047826],[114.469547,38.045509],[114.477263,38.045663],[114.477263,38.044878],[114.481007,38.045069],[114.484465,38.045014],[114.484354,38.043448],[114.489044,38.043407],[114.490327,38.043458],[114.492584,38.043611]]]]}}]}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130108,"name":"裕华区","center":[114.533257,38.027696],"centroid":[114.584117,38.009464],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.490425,37.974015],[114.498575,37.970461],[114.498292,37.971851],[114.505773,37.973048],[114.506112,37.970992],[114.507485,37.969415],[114.511847,37.969952],[114.511601,37.971798],[114.520877,37.972294],[114.52029,37.968858],[114.529028,37.969348],[114.529926,37.969314],[114.552554,37.970908],[114.552999,37.968227],[114.557419,37.968432],[114.557285,37.970129],[114.557793,37.970999],[114.558585,37.971596],[114.560203,37.971845],[114.561655,37.971772],[114.561401,37.974149],[114.565555,37.973645],[114.565979,37.973667],[114.566014,37.974581],[114.572726,37.973977],[114.574541,37.97456],[114.574793,37.979878],[114.579061,37.980204],[114.578986,37.978651],[114.583062,37.978686],[114.584109,37.976547],[114.584327,37.973453],[114.586937,37.972204],[114.591802,37.972095],[114.593201,37.967899],[114.593584,37.968418],[114.592136,37.972475],[114.592702,37.973558],[114.608504,37.973343],[114.608735,37.979582],[114.608752,37.982356],[114.610411,37.982481],[114.610384,37.98564],[114.609675,37.98566],[114.609486,37.986728],[114.609696,37.988929],[114.611807,37.990757],[114.61736,37.990947],[114.61714,37.992099],[114.618182,37.992665],[114.621848,37.992758],[114.621875,37.994895],[114.625089,37.994931],[114.625257,37.997773],[114.627722,37.997657],[114.627509,37.996232],[114.627932,37.995735],[114.632653,37.995574],[114.632759,37.992366],[114.637153,37.99209],[114.639678,37.988884],[114.646192,37.985417],[114.647055,37.984873],[114.647057,37.982538],[114.647798,37.981162],[114.650112,37.980392],[114.650121,37.977126],[114.65715,37.977083],[114.657284,37.974246],[114.657381,37.974207],[114.660243,37.973828],[114.660091,37.971133],[114.669506,37.971171],[114.670338,37.969271],[114.673811,37.968953],[114.673959,37.969682],[114.670914,37.978873],[114.669743,37.984588],[114.669708,37.986381],[114.668082,37.986342],[114.668107,37.988461],[114.665796,37.988563],[114.66553,37.991703],[114.662435,37.992034],[114.658874,37.994729],[114.657082,38.000712],[114.657007,38.002725],[114.655844,38.002574],[114.655724,38.008339],[114.654126,38.010027],[114.652546,38.010014],[114.65261,38.012273],[114.655414,38.01337],[114.656859,38.015315],[114.659619,38.015622],[114.66146,38.016805],[114.662473,38.018018],[114.662418,38.019856],[114.664723,38.019766],[114.664669,38.021801],[114.667152,38.021965],[114.667013,38.024891],[114.670307,38.025894],[114.674059,38.025686],[114.674036,38.029468],[114.674989,38.029519],[114.681188,38.030326],[114.682692,38.031391],[114.681877,38.034855],[114.680712,38.03663],[114.678558,38.038167],[114.677578,38.040142],[114.677041,38.041433],[114.609944,38.054698],[114.591174,38.058887],[114.591313,38.055922],[114.591153,38.037099],[114.535073,38.036017],[114.533146,38.035953],[114.532896,38.035977],[114.532769,38.035942],[114.531931,38.035958],[114.526236,38.035855],[114.524302,38.035781],[114.522865,38.035754],[114.517726,38.035701],[114.511869,38.035595],[114.512021,38.029785],[114.512119,38.028272],[114.512063,38.028253],[114.512057,38.027336],[114.512109,38.026404],[114.512217,38.022297],[114.512188,38.021645],[114.512242,38.021337],[114.512256,38.020849],[114.502352,38.010983],[114.501558,38.010173],[114.500143,38.00878],[114.499129,38.00774],[114.49808,38.006756],[114.495331,38.003979],[114.49442,38.003085],[114.493825,38.002726],[114.492213,38.002105],[114.492373,38.001429],[114.493176,37.998788],[114.492509,37.998656],[114.496232,37.976757],[114.490082,37.97586],[114.490425,37.974015]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130127,"name":"高邑县","center":[114.610699,37.605714],"centroid":[114.598306,37.616239],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.725981,37.630678],[114.723282,37.634732],[114.708463,37.632776],[114.704559,37.63291],[114.70025,37.633861],[114.700114,37.637011],[114.697276,37.637424],[114.69639,37.639319],[114.696983,37.640035],[114.699284,37.638696],[114.7004,37.638926],[114.702785,37.638993],[114.705276,37.640652],[114.70551,37.643688],[114.707476,37.643575],[114.709067,37.644555],[114.709972,37.650351],[114.711648,37.650453],[114.712111,37.651374],[114.708985,37.652877],[114.708427,37.651774],[114.707504,37.65206],[114.706816,37.649208],[114.70261,37.649531],[114.699091,37.649696],[114.698929,37.644931],[114.692816,37.637654],[114.690979,37.636514],[114.691585,37.639051],[114.68995,37.640185],[114.687557,37.641107],[114.685015,37.641132],[114.685074,37.643017],[114.683984,37.642938],[114.682817,37.641991],[114.680565,37.642087],[114.677465,37.643122],[114.674224,37.644944],[114.671882,37.64946],[114.671761,37.654024],[114.669975,37.654215],[114.665466,37.655163],[114.66289,37.657632],[114.654865,37.654854],[114.652732,37.655089],[114.65277,37.655985],[114.652115,37.660775],[114.649683,37.661501],[114.648485,37.663139],[114.648465,37.664999],[114.649724,37.668501],[114.649678,37.670702],[114.64256,37.672493],[114.640188,37.672817],[114.640913,37.675588],[114.636144,37.676063],[114.637023,37.681953],[114.638342,37.681929],[114.64109,37.68775],[114.639175,37.690068],[114.637352,37.690575],[114.637843,37.693522],[114.639427,37.69426],[114.636591,37.694434],[114.635797,37.695047],[114.626559,37.695939],[114.620978,37.696749],[114.620107,37.693838],[114.615459,37.694177],[114.611688,37.692725],[114.610938,37.690507],[114.606771,37.690997],[114.606349,37.691738],[114.604876,37.691994],[114.598648,37.691195],[114.597214,37.688821],[114.591942,37.686864],[114.591248,37.685821],[114.591764,37.681049],[114.591769,37.679604],[114.590582,37.679569],[114.590484,37.677466],[114.587875,37.678222],[114.578367,37.68311],[114.57312,37.686325],[114.572681,37.686206],[114.572344,37.684912],[114.57092,37.681037],[114.570269,37.678149],[114.568167,37.679408],[114.567226,37.679117],[114.564684,37.677448],[114.56125,37.673816],[114.559478,37.673607],[114.553556,37.674108],[114.550189,37.672236],[114.548636,37.671143],[114.54833,37.667865],[114.541207,37.667629],[114.538544,37.667848],[114.538979,37.670122],[114.538449,37.670666],[114.530228,37.671318],[114.529018,37.671966],[114.525455,37.672686],[114.524823,37.672581],[114.52481,37.671663],[114.523273,37.671782],[114.523082,37.669774],[114.52336,37.666823],[114.523239,37.66087],[114.521682,37.654708],[114.519892,37.651188],[114.516564,37.646887],[114.512921,37.644306],[114.507587,37.636028],[114.50495,37.629482],[114.503158,37.622641],[114.501033,37.620439],[114.489326,37.612836],[114.478854,37.595012],[114.471312,37.590656],[114.468932,37.586569],[114.469598,37.580199],[114.473628,37.572977],[114.483478,37.576834],[114.495203,37.578539],[114.501148,37.578239],[114.519944,37.574631],[114.530622,37.570371],[114.539302,37.565867],[114.550266,37.562528],[114.565589,37.556942],[114.576259,37.554296],[114.585186,37.553011],[114.59497,37.553109],[114.603864,37.554579],[114.624279,37.556638],[114.632638,37.556733],[114.646773,37.556214],[114.660284,37.559353],[114.674926,37.564108],[114.68018,37.565269],[114.687038,37.565166],[114.687778,37.57274],[114.694868,37.581299],[114.698793,37.589365],[114.7057,37.61006],[114.707345,37.615803],[114.714848,37.617195],[114.717252,37.621409],[114.716005,37.625983],[114.71699,37.627133],[114.725981,37.630678]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save