派生自 wuyushui/SewerAndRainNetwork

YANGDL
2021-01-05 77f7281ff7cee541aaa51339512e6443b7d89e42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
 *  wfs 多条件属性查询And Or 类型
 * @params params
 *    params={
 *        Url:'',
 *        TypeName:'',
 *        Or:[{'PropertyName':'','PropertyValue',''},{}],
 *        And:[{'PropertyName':'PropertyValue'},{}]
 *    }
 * @returns {string}
 */
function getPropertyNameQueryAndOrWFSUrl (params) {
  var url = ''
  if ((params.Or === undefined || params.Or.length === 0) && (params.And === undefined || params.And.length === 0) && (params.Not === undefined || params.Not.length === 0)) {
    url = params.Url + '?VERSION=1.0.0&SERVICE=WFS&REQUEST=getfeature&TYPENAME=' + params.TypeName + '&outputformat=json&maxfeature=20000'
  } else {
    url = params.Url + '?VERSION=1.0.0&SERVICE=WFS&REQUEST=getfeature&TYPENAME=' + params.TypeName + '&outputformat=json&maxfeature=20000&Filter=<Filter>'
  }
  if (params.Or != null && params.Or.length !== 0) {
    if (params.Or.length === 1) {
      url += '<PropertyIsEqualTo><PropertyName>' + params.Or[0].PropertyName + '</PropertyName><Literal>' + params.Or[0].PropertyValue + '</Literal></PropertyIsEqualTo>'
    } else {
      url += '<OR>'
      for (let i = 0; i < params.Or.length; i++) {
        url += '<PropertyIsEqualTo><PropertyName>' + params.Or[i].PropertyName + '</PropertyName><Literal>' + params.Or[i].PropertyValue + '</Literal></PropertyIsEqualTo>'
      }
      url += '</OR>'
    }
  }
  if (params.And != null && params.And.length !== 0) {
    if (params.And.length === 1) {
      url += '<PropertyIsEqualTo><PropertyName>' + params.And[0].PropertyName + '</PropertyName><Literal>' + params.And[0].PropertyValue + '</Literal></PropertyIsEqualTo>'
    } else {
      url += '<AND>'
      for (let j = 0; j < params.And.length; j++) {
        url += '<PropertyIsEqualTo><PropertyName>' + params.And[j].PropertyName + '</PropertyName><Literal>' + params.And[j].PropertyValue + '</Literal></PropertyIsEqualTo>'
      }
      url += '</AND>'
    }
  }
  if (params.Not != null && params.Not.length !== 0) {
    url += '<NOT>'
    for (let k = 0; k < params.Not.length; k++) {
      url += '<PropertyIsEqualTo><PropertyName>' + params.Not[k].PropertyName + '</PropertyName><Literal>' + params.Not[k].PropertyValue + '</Literal></PropertyIsEqualTo>'
    }
    url += '</NOT>'
  }
  if ((params.Or !== undefined && params.Or.length !== 0) || (params.And !== undefined && params.And.length !== 0) || (params.Not !== undefined && params.Not.length !== 0)) {
    url += '</Filter>'
  }
  return url
}
 
export default {
  getPropertyNameQueryAndOrWFSUrl
}